剑指offer21:调整数组顺序使奇数位于偶数前

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使所有奇数位于数组的前半部分,所有偶数位于数组后半部分.

思路:交换数组元素,若顺序交换,每次找到一个奇数则前移,则要对数组元素进行大量移动. 从数组两头开始,从前往后寻找第一个偶数,然后从后往前寻找第一个奇数,然后将二者交换. 则时间复杂度为O(n).

void reOrderArray(vector<int> &array) {
        int begin= 0;
        int end= array.size()-1;
        while(begin < end){
            while(begin<end && array[begin] % 2!=0) begin++;
            while(begin<end && array[end] %2==0) end--;
            int temp = array[begin];
            array[begin]=array[end];
            array[end]=temp;
        }
    }