思路:类似快速排序的原理
方法一:
void partition1(vector<int> &a)
{
if(a.empty())
return;
int left = 0, right = a.size() - 1;
while(left < right)
{
while(left < right && a[left] % 2 == 1)
left++;
while(left < right && a[right] % 2 == 0)
right--;
swap(a[left], a[right]);
}
}
方法二:
void partition2(vector<int> &a)
{
if(a.empty())
return;
int m = 1;
for(int i = 1; i < a.size(); i++)
{
if(a[i] % 2 == 1)
{
swap(a[i], a[m]);
m++;
}
}
swap(a[m], a[0]);
}