调整数组顺序使奇数位于偶数前面(二):最直观的想法是,双指针。使用变量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;
}



京公网安备 11010502036488号