题目描述
输入一个整数数组,实现一个函数调整该数组中数字的顺序。
使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。
样例
Input: [1,2,3,4,5]
Output: [1,3,5,2,4] //结果不固定,只要满足条件即可
解题思路
-
描述
使用快速排序的方法即可。
-
实现代码:
/* 包含头文件 #include <vector> #include <algorithm> */ void reOrderArray(vector<int> &array) { int i = 0, j = array.size() - 1; while (i <= j) { while ((i <= j) && (array[i] % 2 == 1)) { i++; } while ((i <= j) && (array[j] % 2 == 0)) { j--; } if (i <= j) { swap(array[i], array[j]); } } }
-
复杂度分析
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: ≈ O ( 1 ) \approx O(1) ≈O(1)
使用若干辅助变量