题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解题思路
本题目可以使用排序算法和创建新的数组两种方法来完成。
代码实现
1、
显然这是一个稳定的排序的问题,所谓稳定的排序就是不改变元素的相对位置,数组中相同的元素在排序后,他们的相对位置不变。
可以使用直接插入排序和冒泡排序完成。
冒泡排序:
class Solution {
public:
void reOrderArray(vector<int> &array) {
if(array.empty())
return;
for(int i = 0; i < array.size(); i++)
for(int j = array.size() - 1; j > i; j--)
if(array[j] % 2 != 0 && array[j - 1] % 2 == 0)
swap(array[j], array[j - 1