將乙個資料插入到已排序的有序資料裡,得到乙個有序的、個數加一的有序資料。適用於
少量資料的排序時間複雜度為o(n^2)(乙個元素最多可比較n次,一共n個元素).屬於穩定排序(兩個相等的數不會交換位置).屬於內部排序(不需要訪問外儲存器)
包括:直接插入排序、二分插入排序、希爾排序
直接插入排序:
1.設定監視哨r[0],將待插入紀錄的值賦給r[0]
2.設定開始查詢的位置j
3.在陣列中搜尋,將第j的記錄左移,直至r[0].key>=r[j].key
4.r[0]插入到r[j]
二分插入排序:
1.計算0~i-1的中間點與i上的點比較
2.在相應的半個範圍內找插入位置,不斷重複1的操作
3.確定位置後,將整個序列後移,插入元素
希爾排序:
1.將序列分成幾組,對組內的記錄分別進行排序(一般採用直接插入法)
2.在將幾個組合為一組,分別再進行排序
3.最後只有一組的時候排序完成
插入排序 折半插入排序
折半插入排序 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...