調整數組順序使奇數位於偶數前面

題目描述

輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

解題思路

使用額外數組,以空間換時間
創建倆個數組,一個爲奇數組一個爲偶數組,循環一次原數組,使用位運算判斷奇偶性插入奇數組或者偶數組,然後使用Java的本地方法完成數組的複製

  public void reOrderArray(int[] array) {
        int[] odd = new int[array.length];
        //奇數數組元素個數
        int a = 0;
        //偶數數組元素個數
        int b = 0;
        int[] even = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            if ((array[i] & 1) == 1) {
                odd[a++] = array[i];
            } else {
                even[b++] = array[i];
            }
        }
        //將奇數組和偶數組複製到原數組中
        System.arraycopy(odd, 0, array, 0, a);
        System.arraycopy(even, 0, array, a, b);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章