输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解题思路:
1.准备好一个临时数组
判断原始数组,如果是偶数,就在原数组中删除,并将删除的这个数放在临时的数组中去。直到遍历完原数组之后,将临时数组拼接在原始数组的后面,这样就可以保证,前面都是奇数,后面都是偶数。
#include <iostream>
#include <vector>
using namespace std;
vector<int> orderArray(vector<int> &array)
{
vector<int> res;
vector<int> array_temp;
vector<int> ::iterator ib1,ie1;
ib1=array.begin(); //intial
while(ib1!=array.end()){
if((*ib1)%2==0){
array_temp.push_back(*ib1);
ib1=array.erase(ib1);
}else{
ib1++;
}
}
vector<int>::iterator ib2,ie2;
ib2=array_temp.begin();
ie2=array_temp.end();
for(;ib2!=ie2;ib2++){
array.push_back(*ib2);
}
res=array;
return array;
}
int main()
{
vector<int> array={1,2,3,4,5,6};
vector<int> res=orderArray(array);
vector<int> ::iterator it;
for(it=res.begin();it!=res.end();it++){
cout<<*it<<"";
}
return 0;
}