题目:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
方法一:
假设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;
}