1,给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
要求空间复杂度O(1),时间复杂度O(n)
#include <iostream>
using namespace std;
void Swap(int *a,int *b)
{
int t=*a;*a=*b;*b=t;
}
void oddevensort(int data[],unsigned int length)
{
if(length < 1)
return ;
int begin = 0;
int end = length - 1;
while(end > begin)
{
if (data[begin]%2==0)
{
begin++;
}
if (data[end]%2!=0)
{
end--;
}
Swap(&data[begin],&data[end]);
}
}
int main()
{
int a[10]={0,1,4,6,7,9,10,12,2,5};
oddevensort(a,10);
for (int i=0;i<10;i++)
{
cout<<a[i]<<endl;
}
system("pause");
return 0;
初步程序算法如上,采用两头扫描的方式。