面試題21:調整陣列順序使奇數位於偶數前面
阿新 • • 發佈:2020-07-28
陣列問題。輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。
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; }