试编写算法,将数组 int A[n]中的所有奇数移到所有偶数之前,要求时间复杂度为 O(n)。
这是南京大学2001的研改编题
/// 其他人的题目,未作考究。
const int N = sizeof(A);
int foreward =0, backward =N-1;
while(foreward < backward)
{
if (A[foreward] % 2) //odd
++foreward;
else
{
if ( !(A[backward] % 2) ) //even
--backward;
else
{
int temp = A[foreward];
A[foreward] = A[backward];
A[backward] = temp;
++foreward;
--backward;
}
}
}
//mode: C++