1.归并排序法,使用链表或数组容器

import java.util.ArrayList;
public class Solution {
    public void reOrderArray(int [] array) {
        if(array.length==1||array.length==0) return;
        merge(array);
    }

    public void merge(int[] arr)
    {
        ArrayList<Integer> left = new ArrayList();
        ArrayList<Integer> right = new ArrayList();

        for(int i: arr)
        {
            if((i&1)==0)//偶数
            {
                right.add(i);
            }else{
                left.add(i);
            }
        }
        int r = arr.length-1;
        do{
            arr[r--]=right.remove(right.size()-1);
        }while(right.size()!=0);

        do{
            arr[r--]=left.remove(left.size()-1);
        }while(left.size()!=0);
    }

}

方法二: 插入排序法

import java.util.ArrayList;
public class Solution {
    public void reOrderArray(int [] array) {
        if(array.length==1||array.length==0) return;
        handle(array);

    }

    public void handle(int[] arr)
    {
        for(int i=0,j;i<arr.length;++i)
        {
            if((arr[i]&1)==0) continue;//arr[i] 是奇数,并且前一位是偶数
            int curNode = arr[i];
            for( j=i;j>0&&(arr[j-1]&1)==0;)
            {
                arr[j--]=arr[j];
            }
            arr[j]=curNode;


        }


    }

}

两种方法,看你是想要快,还是内存小