实现一个数组中奇数和偶数分开,奇数在前部分,偶数在后部分 时间复杂度为O(n),空间复杂度为O(1)
//奇偶分开,时间复杂度为O(n),空间复杂度为O(1)
void FunSeperate(int *a,int len)
{
//奇数odd前半部,偶数even后半部
int temp,i,j;
i=0;j=len-1;
for(i=0;i<=j;)
{
if(a[i]%2==0) //偶数
{
if(a[j]%2==1)
{
temp=a[i];a[i]=a[j];a[j]=temp;
i++;
}
j--;
}
else
i++;
}
}
网络上有人也用while控制
void FunSeperate(int *a,int len)
{
//奇数odd前半部,偶数even后半部
int temp,i,j;
i=0;j=len-1;
while( i <= j )
{
if(!(a[i]&1)) //偶数
{
if(a[j]&1) //后面奇数的
{
temp = a[i];
a[i] = a[j];
a[j]= temp;
i++;
}
j--;
}
else
i++;
}
}