1.下标法,注意一下当发现偶数的时候,不能将它直接与最近的奇数交换,这样奇数的相对顺序虽然没有改变,但是偶数的相对数据变化了,所以移位吧。
public class Solution { int[] tempArray; public void reOrderArray(int [] array) { int length=array.length; tempArray=new int[length]; if(length==0||length==1){ } else{ int o; for(int i=0;i<length;){ if(array[i]%2==1){ i++; }else{ o=i; i++; while(i<length&&array[i]%2==0){ i++; } if(i==length){ return; } int temp=array[i]; for(int j=i;j>o;j--){ array[j]=array[j-1]; } array[o]=temp; i=o+1; } } } } }
2.辅助数组法
public class Solution { int[] tempArray; public void reOrderArray(int [] array) { int length=array.length; tempArray=new int[length]; if(length==0||length==1){ } else{ for(int i=0;i<length;i++){ tempArray[i]=array[i]; } int k=0; for(int i=0;i<length;i++){ if(tempArray[i]%2==1){ array[k++]=tempArray[i]; } } for(int i=0;i<length;i++){ if(tempArray[i]%2==0){ array[k++]=tempArray[i]; } } } } }