第一反应是加个数组,还有插入排序,但没反应过来是叫插入排序。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型vector
* @return int整型vector
*/
vector<int> reOrderArray(vector<int>& array) {
// write code here
if(array.empty()) return array;
vector<int>array1(array.size(),0);
int a=0,b=0;
while(a<array.size()){
if(array[a]%2==1)
array1[b++]=array[a++];
else a++;
}
a=0;
while(a<array.size()){
if(array[a]%2==0)
array1[b++]=array[a++];
else a++;
}
return array1;
}
};
插入排序
vector<int> reOrderArray(vector<int>& array) {
int odd_num=-1;//index
for(int i=0;i<array.size();++i) {
//找到奇数就放到前面
if(array[i]%2==1) {
odd_num++;
int cur_num=array[i];
for(int j=i;j>odd_num;j--) {
array[j]=array[j-1];
}
array[odd_num]=cur_num;
}
}
return array;
}
};
评论里的没尝试就放过来了。
冒泡排序
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型vector
* @return int整型vector
*/
vector<int> reOrderArray(vector<int>& array) {
// write code here
for(int i=0;i<array.size();i++)
for(int j=0;j+1<array.size();j++){
if((array[j]%2==0)&&(array[j+1]%2==1)){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
return array;
}
};
交换相邻的两数,注意不要越界。