排序-InsertionSort 插入排序,排序-insertionsort

來源:互聯網
上載者:User

排序-InsertionSort 插入排序,排序-insertionsort

插入排序 の implementation

  插入排序就像打賭的時候,比如雙扣。抽牌的時候,一次拿一張牌,這張牌和之前的牌一張張比較。選擇把這張牌插入什麼位置,排好順序的位置後打牌更順。要不然得一個一個找到時麻煩。也不利於打牌的大局觀。看

  假設第一次抽到梅花7, 不用排序。因為只有一張

  接著抽到梅花10 。因為10比7大,所以不用排序。

  再接著抽卡。發現抽到了梅花5 。這個時候不要猶豫,2點真的不算大的。果斷棄牌

  接著我們拿 5 和 10 比較。 5 小於 10 所以交換位置。

  拿5再和7比。 5 比 7 小。 所以交換 5 和 7 的位置 得到。

  這個時候就已經是sorted的了。 原理就是這樣子。

  因為比較簡單。直接貼上代碼

  

    // O(n^2) 最壞的情況    // 最好的情況 O(n)    public static void sort(Comparable[] a) {        for (int i = 1; i < a.length; i++) {            for (int j = i ; j > 0; j--) {                if (less(a[j], a[j - 1]))                     exch(a, j, j - 1);                else                    break;            }        }    }        public static void sort(Comparable[] a, int low, int hi) {        for (int i = low; i <= hi ; i++) {            for (int j = i ; j > low; j--) {                if (less(a[j], a[j - 1]))                     exch(a, j, j - 1);                else                    break;            }        }    }
InsertSort

  完整的代碼在https://github.com/Cheemion/algorithms/blob/master/src/com/algorithms/sort/InsertionSort.java

  效能分析

  最壞的情況就是每次抽到的卡是最小的。這個時候每次都需要從尾部遍曆到頭部。時間是N ^ 2成正比

  最好的情況就是已經排好序了。因為已經排好序了。所以每次抽到的牌都不需要排序。 時間是 N 成正比

 

 

 

  

 

  

 

  

 

 

  

  

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.