题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路
遍历前半部分数组,如果该数为奇数,则继续;如果该数为偶数,则在内层遍历整个数组,找到该数后面的第一个奇数,将该数和找到的第一个奇数之间的偶数(包括该数)后移一个单位,并将找到的奇数移到该数的位置。
代码
c++实现
class Solution {
public:
void reOrderArray(vector<int> &array) {
int n=array.size();
for(int i=0;i<n/2+1&&i<n;i++){
if(!(array[i]&1)){
int temp=array[i];
for(int j=i+1;j<n;j++){
if(!(array[j]&1)){
int t=array[j];
array[j]=temp;
temp=t;
}
else{
int t=array[j];
array[j]=temp;
temp=t;
break;
}
}
array[i]=temp;
}
}
}
};