分離奇偶數


你如何理解標題“分離奇偶數”?讓我們來解讀一下。

這個問題的目標是在輸入陣列中分離奇數和偶數,同時保持元素的順序,這意味著偶數應該保持與輸入中相同的相對順序,奇數也應該保持與輸入中相同的相對順序。

假設我們有 [3, 5, 2, 6, 8, 9, 10, 11] 作為輸入,那麼輸出將是 [2, 6, 8, 10, 3, 5, 9, 11]

方法

讓我們看看我們將遵循的實現程式碼的方法。

  • 首先,我們建立兩個不同的陣列,一個用於儲存輸入陣列的偶數,另一個用於儲存輸入陣列的奇數。

  • 之後,我們從第一個元素遍歷輸入陣列。

  • 如果輸入陣列中儲存的元素是偶數,我們將其推入 even_array,否則推入 odd_array。

  • 之後,我們清空輸入陣列,然後首先將 even_array 的元素推入輸入陣列,然後將 odd_array 的元素推入輸入陣列。

  • 根據需要重新排列元素後,我們可以將輸入陣列的元素列印到控制檯。

程式碼實現

這是一個分離奇偶數的 C++ 程式

示例

#include <iostream>
#include <vector>

using namespace std;

void segregate_even_odd(vector<int>& arr) {
    vector<int> even;
    vector<int> odd;
    for (int num : arr) {
        if (num % 2 == 0) {
            even.push_back(num);
        } else {
            odd.push_back(num);
        }
    }
    arr.clear();
    for (int num : even) {
        arr.push_back(num);
    }
    for (int num : odd) {
        arr.push_back(num);
    }
}

int main() {
    int n = 5;
    
    vector<int> arr = {1, 2, 3, 4, 5};
    
    segregate_even_odd(arr);
    cout << "After segregating even and odd numbers: ";
    for (int num : arr) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

輸出

After segregating even and odd numbers: 2 4 1 3 5

時間複雜度:O(n)

空間複雜度:O(n)

結論

在本文中,我們嘗試解釋了分離陣列中存在的奇數和偶數並列印新的重新排列陣列的方法,其中奇數和偶數的順序不會改變。我希望本文能幫助你更好地理解這個概念。

更新於: 2023年8月23日

685 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.