調整數組順序

13.輸入一個整數數組,實現一個函數來調整該數組中數字的順序。

使得所有奇數位於數組的前半部分,所有偶數位於數組的後半部分。

  利用兩個指針start,end,start從前向後遍歷數組,end從後向前遍歷數組。start查找偶數,end查找奇數,然後交換順序知道兩指針相遇。

public class javatest {

    public static void reorderOddEven(int[] arr) {
        // 對於輸入的數組爲空,或者長度小於2的只接返回
        if (arr == null || arr.length < 2) {
            return;
        }

        // 從前向後記錄偶數的位置
        int start = 0;
        // 從後向前記錄奇數的位置
        int end = arr.length - 1;
        
        // 開始調整奇數和偶數的位置
        while (start < end) {
            // 找偶數
            while (start < end && arr[start] % 2 != 0) {
                start++;
            }
            // 找奇數
            while (start < end && arr[end] % 2 == 0) {
                end--;
            }

            // 找到後就將奇數和偶數交換位置
            // 對於start=end的情況,交換不會產生什麼影響
            // 所以將if判斷省去了
            int tmp = arr[start];
            arr[start] = arr[end];
            arr[end] = tmp;
        }
    }

    public static void printArray(int[] arr) {
        if (arr != null && arr.length > 0) {
            for (int i : arr) {
                System.out.print(i + " ");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        reorderOddEven(array);
        printArray(array);
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章