题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

答案

public class Solution {
    public void reOrderArray(int [] array) {
        int[] f = new int[array.length];
        int t = 0;
        int n = 0;
        while(t<array.length){
            if(array[t]%2 != 0){
                f[n] = array[t];
                n++;
            }
            t++;
        }
        t = 0;
        while(t<array.length){
            if(array[t]%2==0){
                f[n] = array[t];
                n++;
            }
            t++;
        }
        for(int i = 0;i<array.length;i++){
            array[i] = f[i];
        }
      }
}

解析

开辟一个辅助空间,先放奇数,再放偶数


醉后不知天在水,满船清梦压星河