1. 程式人生 > >劍指offer之使陣列的奇數在偶數前面

劍指offer之使陣列的奇數在偶數前面

題目描述

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

思路

歸併排序相對順序不變性的特點,複雜度O(log2N)O(\log_{2}^{N}),需要注意的是,比較時需要控制的不是大小,而是奇偶性。C++自帶的庫函式std::stable_sort有這個功能。。。相當省心啊。。。

AC程式碼

注意自定義的lambda比較函式。。。。

class Solution {
  public:
    void reOrderArray(vector<int
> &array) { stable_sort(array.begin(), array.end(), [](const int& a, const int& b)->bool { if(a % 2 != 0 && b % 2 == 0) { return true; } else { return false; } }); } };