
解题思路:用快排的思想

 (双指针扫描) O(n)O(n)
用两个指针分别从首尾开始,往中间扫描。扫描时保证第一个指针前面的数都是奇数,第二个指针后面的数都是偶数。
每次迭代时需要进行的操作:
第一个指针一直往后走,直到遇到第一个偶数为止;
第二个指针一直往前走,直到遇到第一个奇数为止;
交换两个指针指向的位置上的数,再进入下一层迭代,直到两个指针相遇为止;
/*
 * 2个指针,一个从前往后,遍历元素是不是奇数。不满足条件跳出while循环,输出当前
 *                        元素的下标i
 * 一个从后往前查元素是不是偶数。不满足条件跳出while循环,输出当前元素的下标j
 * 当两个while都不执行的时候,进行数组元素的交换。
 * 
 * /
class Solution {
public:
    void reOrderArray(vector<int> &array) {
         int i = 0,j=array.size()-1;
         while(i <= j && array[i] % 2 == 1)  //
         {
              i++;
         }
         while(i <= j && array[j] % 2 == 0)
         {
             j++;
         }
         if(i < j) swap(array[i],array[j]);
    }
};
原文:https://www.cnblogs.com/make-big-money/p/12304721.html