1. 程式人生 > 遊戲資訊 >傲世龍城永恆屠龍劍甲反噬怎麼升級 一戰稱王沙城無雙劍甲反噬升級

傲世龍城永恆屠龍劍甲反噬怎麼升級 一戰稱王沙城無雙劍甲反噬升級

思想:

逐步分組進行粗調,最後進行插入排序。

分組的話一開始兩個元素之間相隔的距離是總元素數量的一半,然後再變為1半,最後變為1,每一次都是使用插入排序來做的,我排兩個元素和一個元素,總比排很多個元素要好。

 

 

程式碼:

 public static void sort(int[] nums) {
         int d = nums.length;
         while (d > 1) {
             d = d / 2;
             for (int i = 0; i < d; i++) { // 前面的四個數
                 for (int j = i + d; j < nums.length; j += d) { // 前面四個數一一對應的四個數
                     // 下面開始前後比較
                     int temp = nums[j];
                     int k ;
                     for (k = j - d; k >= 0 && nums[k] > temp; k -= d) {
                         nums[k + d] = nums[k]; // 前面的值賦給後面
                    }
                     // 最後k比插入位置少d
                     nums[k + d] = temp;
                }
            }
        }
    }

穩定性:不穩定

空間複雜度:O(1)

時間複雜度:平均是小於O (N^2) 的,看你的d是怎樣選的,d選的好的話,可以降到O (n^3/2),或者O (n^4/3)