《剑指Offer》-- 调整数组顺序使奇数位于偶数前面

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

  1. 创建 数组1数组2
  2. 遍历整个 array数组,模2判断奇偶,奇数存在 数组1中,偶数存在数组2中;
  3. 先将 数组1中的奇数放在 array数组 中,数组2 中的偶数排在后边;
  4. len1 len2 分别表示 奇数个数偶数个数

图示
《剑指Offer》-- 调整数组顺序使奇数位于偶数前面
代码

package tulun.niuke;

import java.util.Arrays;

/**
 * @program: webproject
 * @description:
 * 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
 * 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,
 * 并保证奇数和奇数,偶数和偶数之间的相对位置不变。
 * @author: YuleXue
 * @create: 2019-03-19 20:27
 **/
public class Niuke_7 {
    public static void reOrderArray(int [] array) {
        int[] array1 = new int[array.length];
        int[] array2 = new int[array.length];
        int len1 = 0;
        int len2 = 0;
        for(int i = 0;i < array.length;i++){
            if((array[i] % 2) != 0){
                array1[len1++] = array[i];//存放奇数
            }else if(array[i] % 2 == 0){
                array2[len2++] = array[i];
            }
        }

        int i = 0;
        while(i < len1){
            array[i] = array1[i];
            i++;
        }
        int j = 0;
        while(j < len2){
            array[i++] = array2[j++];
        }
    }

    public static void main(String[] args) {
        int[] array = {-2,1,0,4,6,5,7,-1,-7,9};
        reOrderArray(array);
        System.out.println(Arrays.toString(array));
    }
}


结果
《剑指Offer》-- 调整数组顺序使奇数位于偶数前面