调整数组顺序使奇数位于偶数前面(剑指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 }

 

posted @ 2020-07-01 11:24  10000_Hours  阅读(66)  评论(0编辑  收藏  举报