题目描述
blablabla
样例
blablabla
算法1
(双重循环加if判断可以使相对位置不发生改变) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
class Solution {
public:
void reOrderArray(vector<int> &array) {
for(int i=0;i<array.size();i++){
if(array[i]%2==0){
for(int j=i+1;j<array.size();j++){
if(array[j]%2!=0){
swap(array[i],array[j]);
break;
}else{
if(array[j]<array[i]){
swap(array[i],array[j]);
}
}
}
}
}
}
};
算法2
(不考虑相对位置,采用双指针) $O(n)$
blablabla
时间复杂度
参考文献
C++ 代码
class Solution {
public:
void reOrderArray(vector<int> &array) {
int l = 0, r = array.size() - 1;
while (l < r) {
while (l < r && array[l] % 2 == 1) l ++ ;
while (l < r && array[r] % 2 == 0) r -- ;
if (l < r) swap(array[l], array[r]);
}
}