golang 插入排序

2021-08-21 16:59:38 字數 638 閱讀 8709

原理

直接插入排序,也是一種非常簡單的排序演算法。

第一輪先從第二個元素開始,和第乙個比較,如果較小就交換位置,本輪結束。第二輪從第三個元素開始,先與第二個比較,如果較小就與第二個交換,交換後再於第乙個比較。如此迴圈直至最後乙個元素完成比較邏輯。

複雜度

最好的情況下,直接插入排序只需進行n-1次比較,0次的交換。平均下來時間複雜度為 o(n^2)。

由於是每個元素逐個與有序的佇列進行比較,所以不會出現相同數值的元素在排序完成後交換位置。所以直接插入排序是種穩定的排序演算法。

**

package main

import (

"fmt"

"math/rand"

)func main()

fmt.println(tree)

for i := 1; i < length; i++

fmt.println(tree)}}

執行截圖:

參考:

插入排序 折半插入排序

折半插入排序 binary insertion sort 直接插入排序採用順序查詢法查詢當前記錄在已排好序的序列中插入位置,這個 查詢 操作可利用 折半查詢 來實 現,由此進行的插入排序稱之為折半插入排序 binary insertion sort 演算法思想 1 將待排序的記錄存放在陣列r 1.n...

插入排序 折半插入排序

折半插入排序是基於直接插入排序的優化。直接插入排序 將第i個元素插入時,通過折半查詢的方式,來查詢第i個元素合適的位置。當0 i 1 位置上的元素都已經排序ok,現需要插入第i個元素,設其值為temp 令low 0,high i,mid high low 2。那麼temp可能插入的位置是 low h...

插入排序 希爾插入排序

本文借鑑於lsgo實驗室創始人馬老師 演算法 希爾插入排序 delta len nums 2 while delta 0 shell delta,nums delta delta 2return nums defshell delta,key for i in range delta,len key...