第一种:又新建了两个数组,一个放奇数,一个放偶数
public class Solution {
public void reOrderArray(int [] array) {
int[] array1=new int[array.length];
int[] array2=new int[array.length];
int length1=0,length2=0;
int j=0,k=0;
for(int i=0;i<array.length;i++){
if(array[i]%2==0){
array2[j++]=array[i];
length2++;
}else{
array1[k++]=array[i];
length1++;
}
}
for(int i=0;i<length1;i++){
array[i]=array1[i];
}
for(int i=0;i<length2;i++){
array[length1+i]=array2[i];
}
}
}
第二种:类似冒泡排序,两个相邻的整数如果前偶后奇就交换
public class Solution {
public void reOrderArray(int [] array) {
for(int i=0;i<array.length;i++){
for(int j=0;j<array.length-1;j++){
if(array[j]%2==0&&array[j+1]%2==1){//前偶后奇
int temp=array[j+1];
array[j+1]=array[j];
array[j]=temp;
}
}
}
}
}
第三种:类似插入排序,每次判断已排好的数组后面的第一个数是奇是偶。
public class Solution {
public void reOrderArray(int [] array) {
for(int i=1;i<array.length;i++){
int target=array[i];
if(array[i]%2==1){
int j=i;
while(j>0&&array[j-1]%2==0){
array[j]=array[j-1];
j--;
}
array[j]=target;
}
}
}
}