题意
给定一个数组,要求把所有偶数移到后半部分,所有奇数移到前半部分
分析
这个要求有点像快速排序的 partition, 把一个数组分为具有不同性质的两个区间,区间内部的要求不是那么严格。考虑采用相似的思路,用两个指针扫描一遍,奇数丢到前面,偶数丢到后面
class Solution {
public:
void reOrderArray(vector<int> &array) {
int len = array.size();
if(len <= 1)return;
int i = 0, j = len - 1;
while(i < j){
while(i < len && array[i] % 2 != 0)i ++;
while(j >= 0 && array[j] % 2 == 0)j --;
if(i < j)swap(array[i], array[j]);
}
}
};