首页 > 试题广场 >

设计将所有奇数移到所有偶数之前的算法。

[问答题]
设计将所有奇数移到所有偶数之前的算法。

void quickpass(int r[], int s, int t)
{
int i=s,j=t,x=r[s];
while(i<j)
{
while (i<j && r[j]%2==0) j=j-1;  if (i<j) {r[i]=r[j];i=i+1;}
while (i<j && r[i]%2==1) i=i+1;  if (i<j) {r[j]=r[i];j=j-1;}
}
r[i]=x;
}

发表于 2017-05-17 01:46:50 回复(4)
本题可采用快速排序的划分思想来设计算法,只需遍历一次即可,其时间复杂度为O(n)  空间复杂度为O(1)
基本思想是:先从前往后找到一个偶数元素,再从后往前找到一个奇数元素,将二者交换。
发表于 2021-12-17 20:50:45 回复(0)