思路一:先统计出奇数的个数,就可以知道奇数位置在数组里面哪里结束,然后复制原数组,得到新数组,遍历新数组,先往原数组(这里很关键)里面的书替代成奇数,再将奇数后面的替换成偶数,时间复杂度为O(n),空间复杂度为O(n)
public void reOrderArray(int [] array) {
int countJishu=0;
for(int num:array){
if(!isEven(num)){
countJishu++;
}
}
//int []help=new int[array.length];
int []help=array.clone();
int k=0,q=countJishu;
for(int num:help){
if(num%2==1){
array[k++]=num;
}else{
array[q++]=num;
}
}
}
public boolean isEven(int num){
return num%2==0;
}
思路二:利用冒泡排序的思想将偶数都冒到后面去
public void reOrderArray(int [] array) {
//思路二:利用冒泡排序的思想将偶数都冒到后面去
int len=array.length;
for(int i=0;i<len-1;i++){
for(int j=0;j<len-i-1;j++){
if(isEven(array[j])&&!isEven(array[j+1])){
swap(array,j,j+1);
}
}
}
}
public void swap(int arr[],int i,int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
public boolean isEven(int num){
return num%2==0;
}