參考文章
時間複雜度o(n2),最好情況o(n),最壞情況o(n2),穩定。(同冒泡)
工作原理:通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。
演算法描述如下:
從第乙個元素開始,該元素可以認為已經被排序
取出下乙個元素(第二個元素)作為目標元素,在已經排序的元素序列中從後向前掃瞄
如果當前元素(掃瞄到的元素)大於目標元素,將當前元素與目標元素交換
重複步驟3,直到找到目標元素的位置(當前元素小余或等於目標元素)
重複步驟2-4
使用陣列結構的話,沒比較一次且滿足插入條件的話就需要交換一次,如果使用鍊錶結構(只用記錄後繼,但同時需要維護下標;記錄後繼和前驅,無需維護下標)的話,只需記錄位置,最後插入即可,無需插入多次。
先對陣列前兩個元素進行排序,之後將第三個元素與前兩個比較,按排序規則插入正確的位置,之後將第四個元素與前三個,比較插入正確的位置,以此類推直至最後乙個元素
如果比較操作的代價比交換操作大的話,可以採用二分查詢法來減少比較操作的數目。該演算法可以認為是插入排序的乙個變種,稱為二分查詢插入排序。
實現類為:insertionsort
**已上傳 github ,可以在 這裡 找到
比較排序 氣泡排序 插入排序 比較排序
以下排序都以從小到大排序為例 1.氣泡排序 氣泡排序就是從第乙個元素開始,對每乙個元素與它之後所有的元素進行比較,將較小的乙個放在前,大的放在後 氣泡排序兩層迴圈 一般排序都是兩層迴圈 內層迴圈有兩種寫法,形式稍稍不同,但排序結果相同 第一種for int i 0 ia j for int j 0 ...
三 插入排序
我們打牌的時候,拿到的牌經常是需要進行排序操作的,一般是一張一張的來,將每一張牌插入到其他有序的牌中的適當位置。基於這種思想,就有了插入演算法 通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。將第一待排序序列第乙個元素看做乙個有序序列,把第二個元素到最後乙個元素當成...
三 插入排序
插入排序 和打撲克牌,抓牌的過程是一樣的。大致就是這麼個意思,圖畫的不好,請擔待。圖上描述的是插入的過程,那麼他怎麼知道,乙個乙個的和前面的作比較,比前邊的數字小就交換,一直交換到正確的位置。package bubbling 插入排序 author zy 劉會發 version 1.0 since ...