剑指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;
}
}