输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
算法思路:新建两个数组,遍历原数组,奇数放到一个新数组中,偶数放到另外一个数组中,最后把装有偶数的数组追加到装有奇数的数组后
#include <iostream>
#include <vector>
using namespace std;
void OddBeforeEven(vector<int> &arr)
{
vector<int> OddArr;
vector<int> EvenArr;
if (arr.size() == 0)
return;
for (unsigned int i = 0; i < arr.size(); i++)
{
if (arr[i] % 2 == 0)
EvenArr.push_back(arr[i]);
else
OddArr.push_back(arr[i]);
}
OddArr.insert(OddArr.end(), EvenArr.begin(), EvenArr.end());
arr = OddArr;
}
int main()
{
vector<int> array = {123,445,33,213,5664,122,111};
OddBeforeEven(array);
for (unsigned int i = 0; i < array.size(); i++)
cout << array[i] << endl;
}