调整数组顺序使奇数位于偶数前面(二):最直观的想法是,双指针。使用变量i指向奇数,初始为0,使用变量j指向偶数,初始为n-1,当i小于j时执行循环,首先找到左边第一个偶数,再找到右边第一个奇数,然后交换两者,并将指针向内收缩。
vector<int> reOrderArrayTwo(vector<int>& array) { int n=array.size(); // i指向左边部分 int i=0; // j指向右边部分 int j=n-1; while(i<j) { // 左边奇数 找到第一个偶数 while(array[i]%2!=0) i++; // 右边偶数 找到第一个奇数 while(array[j]%2==0) j--; // 交换两者 if(i<j) { swap(array[i],array[j]); i++; j--; } } return array; }