题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,
所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变
public void reOrderArray(int [] array) { int [] temp=new int[array.length]; int count=0; int t=0; for (int i : array) { if(i%2!=0){ array[count++]=i; }else{ temp[t++]=i; } } int i=0; while (i<t) { array[count]=temp[i++]; count++; } }
解题思路二(插排思想):若是遇到奇数,向前移动到前一个奇数后面
public static void reOrderArray2(int [] array) { for (int i = 1; i < array.length; i++) { int insertValue=array[i]; if(insertValue%2==1){ //注意这里,先判断i是否出界 while(i>0 && array[i-1]%2==0){ array[i]=array[i-1]; i--; } array[i++]=insertValue; } } }