要求:有一个整数数组,写一个函数,实现奇数奇数在左,偶数在右。
例子:a[10] = {2,4,3,5,7,8,1,9,6,10},其中a[10] = {3,5,7,1,9,2,4,8,6,10}是一个合法的输出。
分析:
方法一:遍历一遍数组,vector1存奇数,vector2存偶数,然后vector2加到vector1后面。
方法二:快排的思想,首尾两个指针,向前向后遍历,交换奇偶数。
代码:
方法1:
void fun1(int a[],int N)
{
vector<int> v1;
vector<int> v2;
for(int i=0;i<10;i++)
{
if(a[i]&1)
{
v1.push_back(a[i]);
}
else
{
v2.push_back(a[i]);
}
}
v1.insert(v1.end(),v2.begin(),v2.end());
vector<int>::iterator it1 = v1.begin();
for(;it1!=v1.end();it1++)
{
cout<<*it1<<endl;
}
}
方法二:
void fun2(int a[],int N)
{
int m = 0;
int n = N-1;
while(m!=n+1)
{
if(!(a[m]&1))
{
int temp = a[m];
a[m] = a[n];
a[n] = temp;
n--;
}
else
{
m++;
}
}
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
}