class Solution {
public:
void reOrderArray(vector<int> &array) {
int len = array.size();
if (!len) return;
int ex[len];
int count = 0;
for (int i = 0; i < len; i++){
if (array[i]&1){
ex[count++] = array[i];
}
}
for (int i = 0; i < len; i++){
if ((array[i]&1)==0){ //这里不能array[i]&1==0,会先运算1==0再运算&,会导致后边没有偶数录入ex,从而后边的数都是随机初始化的数
ex[count++] = array[i];
}
}
vector<int> res(ex, ex+len);
array = res;
}
};
解法二
idea:冒泡法
遇到前偶数后奇数则swap,把偶数挪到最后边。
code
class Solution {
public:
void reOrderArray(vector<int> &array) {
int len = array.size();
for (int i = 0; i < len-1; i++){
for (int j = 0; j < len-1-i; j++){
if (((array[j]&1)==0) & (array[j+1]&1))
swap(array[j], array[j+1]);
}
}
}
};