1.思路:
遍历一次待排序数组,用int start记录已排序好的最后一个奇数的下标,当遍历到奇数时,使用类似于冒泡的方式,将奇数移动至下标start处,以保证偶数间的相对顺序不发生变化,然后++start。
2.代码:
class Solution {
public:
void swape(vector<int> &array, int i, int j) {
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
bool isodd(int num) {
return (num % 2 == 1);
}
void reOrderArray(vector<int> &array) {
int n = array.size();
int i, start = 0;
for(i = 0; i < n; ++i) {
if(isodd(array[i])) {
while(i > start) {
swape(array, i, i-1);
--i;
}
++start;
}
}
}
};