调整数组顺序使奇数位于偶数前面(剑指offer-13)
方法1:新建两个数组,一个数组用来放奇数,一个数组用来放偶数,最后再把它们合并起来。
1 import java.util.*; 2 public class Solution { 3 public void reOrderArray(int [] array) { 4 ArrayList<Integer> a = new ArrayList<>(); 5 ArrayList<Integer> b = new ArrayList<>(); 6 7 for(int i=0;i<array.length;i++){ 8 if(array[i]%2==1){ 9 a.add(array[i]); 10 } 11 else 12 b.add(array[i]); 13 } 14 //合并两个数组 15 int index = 0; 16 for(int x : a ){ 17 array[index++] = x; 18 } 19 for(int x : b ){ 20 array[index++] = x; 21 } 22 } 23 }
方法二:采用插入排序的思路,碰到奇数时就往前移动,直到前面的数也是奇数就停止。
1 public class Solution { 2 public void reOrderArray(int [] array) { 3 for(int i=0;i<array.length;i++){ 4 if(array[i]%2 == 1){//遇到奇数时开始往前移动 5 for(int j=i-1;j>=0;j--){ 6 if(array[j]%2==0){//移动到前面是偶数时,移动停止 7 int tem = array[j]; 8 array[j] = array[j+1]; 9 array[j+1] = tem; 10 } 11 else break; 12 } 13 } 14 } 15 } 16 }
Stay hungry,Stay foolish