試編寫算法,將數組 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++