1. 程式人生 > >對長度為N的陣列,值大小為(1, N)且無重複數字的陣列進行排序

對長度為N的陣列,值大小為(1, N)且無重複數字的陣列進行排序

迴圈遍歷陣列,判斷arr[i] == i + 1,是否成立。若不成立,則交換 arr[i] 和arr[arr[i] - 1];若成立,則繼續遍歷下一個

    public void swap(int[] arr, int i, int j){
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }

    public int[] sort(int[] arr){
        if (arr.length <= 1){
            return arr;
        }
        for
(int i = 0; i < arr.length; ){ if (arr[i] != i + 1){ swap(arr, i, arr[i] - 1); }else { i++; } } return arr; }

時間複雜度O(n),空間複雜度O(1)