空间换时间,使用两个指针的思想,节省时间,从头遍历array[]的时候,指针一从头开始收集奇数,按顺序放到a[]的头部;同理,指针二从数组尾巴开始收集偶数,按顺序(倒着依次放)放到a[]的尾部。花一次遍历的时间,同时处理奇数和偶数。

这样就可以得到一个前面是按顺序放好的奇数,后面也是按顺序放好的偶数的一个数组a[],最后再复制给array[]。
public class Solution {
    public void reOrderArray(int [] array) {
        if(array.length <= 1){
            return;
        }
        int a[] = new int[array.length];
        int oddNum = 0;    //记录新数组奇数摆放的位置
        int evenNum = array.length - 1;    //记录新数组偶数摆放的位置
        for(int i = 0; i < array.length; i++){
            //遍历数组时,把遍历到的奇数一个个地按顺序放到前面
            if((array[i] & 1) == 1){
                a[oddNum] = array[i];
                oddNum++;
            }
            if((array[array.length - i - 1] & 1) == 0){
                //遍历数组时,把遍历到的偶数一个个地按顺序放到后面
                a[evenNum] = array[array.length - i - 1];
                evenNum--;
            }
        }
        for(int i = 0; i < array.length; i++){
            array[i] = a[i];
        }
    }
}