题目:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
方法一:
假设a数组存着原数组,我们可以生成一个一样的b数组,先遍历a数组,找出所有奇数,放入b数组中,最后再遍历一次a数组,把偶数放入b数组中
原理验证:
#include<iostream>
#include<math.h>
#include<vector>
using namespace std;
void reOrderArray(vector<int>& array) {
vector<int> b = array;//复制动态数组
int i = 0;
int j;
for (j = 0; j < array.size(); j++)
if (array[j] % 2 == 1)
{
b[i] = array[j];
i++;
}
for (j = 0; j < array.size(); j++)
if (array[j] % 2 == 0)
{
b[i] = array[j];
i++;
}
//使array为变换后的数组
array = b;
}
int main()
{
int a[6] = { 1,2,3,4,5,6 };
vector<int> b;
// 向b中输入值
for (int i = 0; i <= 5; i++)
b.push_back(a[i]);
//转换
reOrderArray(b);
//输入b数组的值
for (int j = 0; j <= b.size() - 1; j++)
cout << b[j] << " ";
return 0;
}