输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。
并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思想简单,想ac可没那么容易。
1.给个队列,筛选奇数,存进队列,再筛选存入;最后取出;
2.标记法,遇到奇数前移,移动的是上个奇数和下个奇数之间的数,下次遍历,从最后一个奇数开始,直到结束
int j=0;//记录第一个为奇数的位置 int m=0;//记录排好序的奇数的最后一个位置 for(int i=0;i<array.length;i++) { if(array[i]%2==1)//找到第一个奇数 { int temp = array[i];//记录第一个奇数 int ti=i; for(;ti>0;ti--) { array[ti]=array[ti-1];//将第一个奇数之前的所有元素往后移一个位置 } array[0] = temp;//将第一个奇数放到array[0]位置 j=i; break; } } for(++j;j<array.length;j++)//依次寻找剩余的奇数 { if(array[j]%2==1) { int temp = array[j]; int tj = j; for(;tj>m;tj--) { array[tj]=array[tj-1]; } array[++m]=temp; } } }