剑指offer上的题目。题目内容如下:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
简单的,考虑控制2个指针,p1,p2.
p1指向首数组,p2指向尾数组。
接着p1,向前移动,当遇到偶数时,停止,
p2向后移动,当遇到奇数时,停止
交换2个数字。
题目详细解释,可以参照剑指offer上的解析。
代码如下:
package com.test.algorithm; import java.util.Scanner; public class Numbers { public static void reOrderArray(int [] array) { int p1,p2,len; len = array.length; p1 = 0 ; p2 = len - 1; while(p1<p2){ while(array[p1]%2!=0&&p1<p2) p1++; while(array[p2]%2==0&&p1<p2) p2--; if(p1<p2){ int temp; temp = array[p1]; array[p1] = array[p2]; array[p2] = temp; } } } public static void main(String[] args) { //Scanner scanner = new Scanner(System.in); int[] arrays = new int[]{1,2,3,4,5,6,7}; reOrderArray(arrays); for(int i = 0 ; i < arrays.length; i++){ System.out.println(arrays[i]); } } }