剑指Offer第13题:调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

解题思路:使用冒泡排序的思想,碰到前偶数后奇数,就交换二者的位置。内循环每完成一次,就有一个偶数被放到最末尾,下次内循环的结束位置就可以往前移动一位。

代码:

1
2
3
4
5
6
7
8
void reOrderArray(vector<int> &array) {
for (int i=0; i<array.size(); i++) {
for (int j=0; j<array.size()-1-i; j++) { //内循环完成一次,终止位置往前移动一位
if (array[j]%2==0 && array[j+1]%2==1) //交换奇偶
swap(array[j], array[j+1]);
}
}
}