題目描述
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
思路:如果這裏不考慮空間的複雜度,可以用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);
}
}
}
};