描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
代码
public class Solution {
public void reOrderArray(int [] array) {
int doublenum=0;
for(int i=0;i<array.length-1;i++){
if(array[i]%2==0){
doublenum++;
}
if(doublenum!=0&array[i+1]%2!=0){
int cur=array[i+1];
// 1 2 3 4 5 6 7
// 1 3 2 4 5 6 7
//
for(int j=i;j>=i-doublenum+1;j--){
array[j+1]= array[j];
}
array[i-doublenum+1]=cur;
doublenum--;
}
}
}
}
新得
这道题的关键在于什么时候移位,并且移动几位,
移位的要求 :该数为奇数,且前面至少有1个偶数
移动几位:将该数前面的偶数依次后移1位,将该数前移 前面的偶数个数 位