题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
代码
#include <iostream>
#include <vector>
#include <cstdlib>
#include <stack>
#include <cmath>
using namespace std;
/*
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
*/
void reOrderArray(vector<int> &array) {
vector <int> p1;
vector <int> p2;//奇数
int i=0,j;
j=array.size()-1;
for(i=0;i<=j;i++){
if(array[i]%2 == 0){
p1.push_back(array[i]);
}else{
p2.push_back(array[i]);
};
};
array.clear();
for(i=0;i<p2.size();i++){
array.push_back(p2[i]);
};
for(i=0;i<p1.size();i++){
array.push_back(p1[i]);
};
}
int main() {
vector <int > n;
n.push_back(1);
n.push_back(2);
n.push_back(3);
n.push_back(4);
n.push_back(5);
n.push_back(6);
reOrderArray(n);
};
总结
我使用的是时间复杂度为n 空间复杂度为n 的算法,解题的思路就是把奇数存一个数组,偶数存一个数组 再合并