算法1
思路:定义两个变量i,j,i从第一个数开始向后走,j从数组的最后一个元素向前走,如果array[i]%2,表示奇数,此时i++,同理j位置上的数是偶数,j–,如果i是偶数,则交换
C++ 代码
class Solution {
public:
void reOrderArray(vector<int> &array) {
int i=0,j=array.size()-1;
while(i<j){//前提条件是i<j,第一次忘记写了,然后出现答案错误,一直没找出来
while(i<j && array[i]%2) i++;//array[i]是奇数,向后移
while(i<j && array[j]%2==0) j--;//array[i]是偶数,向前移
if(i<j) swap(array[i],array[j]);//如果不满足,则交换
}
}
};