题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
考察点
- 数组
解题思路
- 最容易想到的是:新建一个数组,先循环一遍原数组找出奇数放入新数组,再循环一遍原数组,找出偶数放入新数组,最后将新数组赋给原数组。
完整代码
/*13-实现数组中奇数排在偶数前*/
#include<iostream>
#include<vector>
using namespace std;
class Solution
{
public:
void reOrderArray(vector<int> &array)
{
int length = array.size();
vector<int> result;
for (int i = 0; i < length; i++)
{
if ((array[i] & 1) == 1)
result.push_back(array[i]);
}
for (int i = 0; i < length; i++)
{
if ((array[i] & 1) == 0)
result.push_back(array[i]);
}
array = result;
}
};
int main()
{
Solution s;
vector<int> array = { 2,1,7,4,5,6 };
s.reOrderArray(array);
for (int i = 0; i < array.size(); i++)
{
cout << array[i];
}
cout << endl;
return 0;
}
编程遇到的问题
- 求奇数偶数时,使用位与来实现结果缺失,改为取余却能正确输出。查找原因发现:在做位与时未加括号,忽略了优先级!! 编写不规范呀!!