输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变
思路:
从前向后遍历,先找出第一个偶数;
然后以这个偶数为基准,向后找出奇数,插入到这个偶数的前面
class Solution {
public:
void reOrderArray(vector<int> &array) {
if(array.empty())
return;
int i=0;
while(i<array.size()){
//找第一个偶数,作为基准
while(i<array.size() && array[i]%2!=0)
i++;
int j=i+1;
//找第一个奇数
while(j<array.size() && array[j]%2==0)
j++;
if(j<array.size()){
int num=array[j];
for(int k=j-1;k>=i;k--)
array[k+1]=array[k];
array[i]=num;
}
else
break;
}
}
};