数组问题。输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
C++版本
#include <iostream>
#include <vector>
#include <stack>
#include <cstring>
#include <queue>
#include <algorithm>
#include "TreeNode.h"
using namespace std;
void reOrderArray(vector<int> &array){
if(array.size() == 0)
return ;
int ans[array.size()];
for(int i = 0; i < array.size(); i++){
ans[i] = array[i];
}
int* pBegin = ans;
int* pEnd = ans + array.size() - 1;
while(pBegin < pEnd)
{
// 向后移动pBegin,直到它指向偶数
while(pBegin < pEnd && (*pBegin & 0x1) != 0)
pBegin ++;
// 向前移动pEnd,直到它指向奇数
while(pBegin < pEnd && (*pEnd & 0x1) == 0)
pEnd --;
if(pBegin < pEnd)
{
int temp = *pBegin;
*pBegin = *pEnd;
*pEnd = temp;
}
}
for(int i = 0; i < array.size() ; i++){
array[i] = ans[i];
}
}
int main()
{
vector<int> array;
array.push_back(1);
array.push_back(2);
array.push_back(3);
array.push_back(4);
array.push_back(5);
array.push_back(6);
array.push_back(7);
reOrderArray(array);
for(int i = 0; i < array.size(); i++){
cout<<array[i]<<" ";
}
return 0;
}