题目:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路:
创建两个数组,一个存储奇数,一个存储偶数,最后奇数在前,偶数在后,将两个数组合并。
代码:
void reOrderArray(vector<int> &array) {
// 创建两个数组,一个存储奇数,一个存储偶数
vector<int> oldd;
vector<int> even;
for(int i=0;i<array.size();i++)
{
if(array[i]%2==1)
{
oldd.push_back(array[i]);
}else{
even.push_back(array[i]);
}
}
array.clear();// 清空原数组
// 奇数组在前,偶数组在后,合并两个数组
array.insert(array.end(),oldd.begin(),oldd.end());
array.insert(array.end(),even.begin(),even.end());
}
知识点:
数组合并
array.insert(pos1,array2.pos2,array2.pos3); 在数组array的pos1处插入数组array2从pos2到pos3的内容。