1、輸入乙個整數陣列,調整陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。要求時間複雜度為 o(n)。
如:134523:135342。注意:題目沒有要求調序後奇偶數的相對位置保持不變。
解答:利用兩個指標i,j
,乙個指向頭(i),乙個指向尾(j)。
當i指向的是奇數時,不需要調整,i++;
當j指向的是偶數時,不需要調整,j--;
當i指向的是偶數而j指向的是奇數時,交換。
void ch1(char *str)
while((str[j]-'0')%2==0)//偶數
if(i
2、同1,但要求相對位置不變。只想到用類似插入排序的方法,時間複雜度為o(n*n)
void ch2(char *str)
str[j+1]=tmp;
} i++;
}}
3、輸入乙個整數陣列,調整陣列中數字的順序,使得調整後的數字按照 奇偶
奇偶奇偶
奇偶...方式排列
解答:方法類似,只是要對i指向的數判斷應該是偶數還是奇數。
void ch3(char *str)
else//需要調整,從後向前找到乙個奇數來調整
{while(i
程式設計之法 面試和演算法心得(奇偶調序)
輸入乙個整數陣列,調整陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。要求時間複雜度為o n 最容易想到的辦法是從頭掃瞄這個陣列,每碰到乙個偶數,拿出這個數字,並把位於這個數字後面的所有數字往前挪動一位。挪完之後在陣列的末尾有乙個空位,然後把該偶數放入這個空位。由於每碰...
奇偶數間隔排序問題
題目 對乙個陣列,將陣列中偶數從大到小排序,奇數從小到大排序,奇數和偶數交叉著放且輸出陣列第一位放奇數,若奇數和偶數不等長,則把剩下的直接放到陣列中。includevoid main int strodd 20 int streven 20 printf 輸入一組整數 n gets strs int...
問題 H 整數奇偶排序
演算法筆記 4.1小節 排序 問題 h 整數奇偶排序 題目描述 輸入10個整數,彼此以空格分隔。重新排序以後輸出 也按空格分隔 要求 1.先輸出其中的奇數,並按從大到小排列 2.然後輸出其中的偶數,並按從小到大排列。輸入 任意排序的10個整數 0 100 彼此以空格分隔。輸出 可能有多組測試資料,對...