题目:在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的奇数都在左边。请完成sort的代码实现(C++或Java)
利用快排
一趟快排时候比第一个数大的位于左边,小的位于右边,
于是可以,
奇数位于左边偶数位于右边
#include<iostream>
using namespace std;
void f(int a[],int left,int right)
{
int i ,j ,x;
i = left ;j = right ;x = a[left];
while(i<j)
{
while(i<j&&a[j]%2==0)
j--;
a[i] = a[j];
while(i<j&&a[i]%2!=0)
i++;
a[j] =a[i];
}
a[i] = x;
}
int main()
{
int i,a[110],n;
cin >> n;
for( i = 0;i<n;i++)
cin >> a[i];
f(a,0,n-1);
for(i = 0;i<n-1;i++)
cout << a[i] << " " ;
cout << a[i] << endl;
return 0;
}