插入排序的變形

題目描述
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

思路:如果這裏不考慮空間的複雜度,可以用O(n),但是爲了節約空間,我們採用插入排序的方法處理這個問題。代碼如下:

class Solution {
public:
    //簡單用插入排序的方法處理
    //交換數據
void Swap(vector<int>& array, int left, int right){
    int temp = array[left];
    array[left] = array[right];
    array[right] = temp;
}
void reOrderArray(vector<int> &array) {
    //判斷邊界條件
    if (array.size()<2)return;
    for (int i = 1; i != array.size(); ++i){
        //將array[i] 插入 前方數組
        for (int j = i; j > 0 && array[j] % 2 == 1 && array[j - 1] % 2 == 0; --j){
            Swap(array, j, j - 1);
        }
    }
}
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章