面試題14 調整陣列順序使奇數字於偶數前面

2021-07-13 08:25:28 字數 541 閱讀 5588

最簡單的辦法就是開闢和原陣列同樣大小的空間,順次掃瞄原陣列2次,第一次將所有奇數放進新陣列中,第二次將偶數放入就可以。這種方法的時間複雜度為o(n),空間複雜度為o(n)。

**如下:

void reorderoddeven(vector& arr)

{ vectornewarr;

int i;

for(i=0;i以上演算法的優點是不會改變原資料的相對順序。我們也可以只掃瞄原陣列一次,若為奇數,則從新陣列前面開始往後放;若為偶數,則從新陣列後面開始往前放。這種方法缺點是會使偶數的相對順序翻轉。**從略。

一種更好的思路是,受快速排序演算法的啟發,我們模仿快速排序的partition函式,從原陣列的兩端向中間掃瞄,前、後指標分別遇到偶數和奇數就停下來,然後交換他們即可。

**如下:

void reorderoddeven(vector& arr)

{ int i=0,j=arr.size()-1;

while(i以上

完整**及測試用例在github上:點我前往

面試題14 調整陣列順序使奇數字於偶數前面

這個題目要求把奇數放在陣列的前半部分,偶數放在陣列的後半部分,因此所有的奇數應該位於偶數的前面。也就是說我們在掃瞄這個陣列的時候,如果發現有偶數出現在奇數的前面,我們可以交換它們的順序,交換之後就符合要求了。因此我們可以維護兩個指標,第乙個指標初始化時指向陣列的第乙個數字,它只向後移動 第二個指標初...

面試題14 調整陣列順序使奇數字於偶數前面

題目 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,是的所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。初級程式設計師 1 void reorderoddeven vector data 218 19 可擴充套件性解法 將判斷標準變成乙個函式指標 1 bool iseven int...

面試題14 調整陣列順序使奇數字於偶數前面

題目描述 輸入乙個整數陣列,實現乙個函式來呼叫該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。解決方案 1.只完成基本功能的解法,僅適用於初級程式設計師 方法 設定頭尾兩個指標,滿足條件就交換,直到碰頭為止。我的 實現,僅供參考 1 public static voi...