排序演算法Java——插入排序(直接插入排序)__編碼

來源:互聯網
上載者:User

撲克牌相信大家都有玩過,直接插入排序和玩撲克牌很相似,右手抓取一張撲克牌,並把它插入左手拿著的排好序的撲克裡面。

如圖:



演算法介紹:

直接插入排序演算法是最簡單的演算法,也是最基本的演算法。SO,插入排序就是把當前待排序的元素插入到一個已經排好序的列表裡面

插入排序的最壞已耗用時間是O(n2), 所以並不是最優的排序演算法。特點是簡單,不需要額外的儲存空間,在元素少的時候工作得好。

Java裡面有很多資料類型,選取的是最簡單的整數,但這並不失一般性。

即使是自己定製化的對象,實現了java.lang.Comparable, 把對應的 大於符號(>)以及小於符號(<)換成compareTo即可。

廢話不多說,直接上代碼:

/*@(#)InsertSort.java   2017-4-20  * Copy Right 2017 Bank of Communications Co.Ltd. * All Copyright Reserved */package com.sort.cn;/** * TODO Document InsertSort * <p> *  * 插入排序(直接插入排序) * 平均O(n^2),最好O(n),最壞O(n^2);空間複雜度O(1);穩定;簡單 *  * @version 1.0.0,2017-4-20 * @author Singit * @since 1.0.0 */public class InsertSort {public static void insertionSort(int[] a) {        int tmp;        for (int i = 1; i < a.length; i++) {            for (int j = i; j > 0; j--) {                if (a[j] < a[j - 1]) {                    tmp = a[j - 1];                    a[j - 1] = a[j];                    a[j] = tmp;                }            }        }    }public static void main(String[] args) {int[] a = { 45, 36, 67, 98, 70, 11, 24, 53 };        insertionSort(a);        for (int i : a)            System.out.print(i + " ");    }}

輸出結果:

11 24 36 45 53 67 70 98 


總結:

優點:穩定 
空間複雜度O(1) ,時間複雜度O(n2) 
最差情況:反序,需要移動n*(n-1)/2個元素 
最好情況:正序,不需要移動元素

數組在已排序或者是“近似排序”時,插入排序效率的最好情況已耗用時間為O(n);插入排序最壞情況已耗用時間和平均情況已耗用時間都為O(n2)。

通常,插入排序呈現出二次排序演算法中的最佳效能。

對於具有較少元素(如n<=15)的列表來說,二次演算法十分有效。在列表已被排序時,插入排序是線性演算法O(n)。

在列表“近似排序”時,插入排序仍然是線性演算法。在列表的許多元素已位於正確的位置上時,就會出現“近似排序”的條件。

通過使用O(nlog2n)效率的演算法(如快速排序)對數組進行部分排序,然後再進行選擇排序,某些進階的排序演算法就是這樣實現的。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.