直接插入排序(insertion sort)的基本思想是:每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子串行中的適當位置,直到全部記錄插入完成為止。
二舉例有序 無序
第一趟 27 65
59 64 58
第二趟 27 59 65 64 58
第三趟 27 59 64 65 58
第四趟 27 58 59 64 65 null
將待插入記錄(無序紀錄)r[i]的關鍵字從右向左依次與有序區中記錄r[j](j=i - 1, i - 2, ....,1)的關鍵字比較:
若r[j]的關鍵字大於r[i]的關鍵字,則將r[j]後移乙個位置
若r[j]的關鍵字小於或等於r[i]的關鍵字,則查詢過程結束,j + 1即為r[i]插入位置
關鍵字比r[i]的關鍵字大的記錄均已後移,所以j + 1的位置已經騰空,只要將r[i]直接插入到此位置即可完成一趟直接插入排序
n個數字共需要n-1插入
時間複雜度:o(n2)
空間複雜度:o(1) (空間複雜度並不是指資料所占用空間的大小,而是指占用輔助空間的大小,比如說計算兩個矩陣的運算,中間還設定了乙個中間矩陣來儲存一些資料,那麼這個演算法的空間複雜度就不是1)
插入排序 折半插入排序
折半插入排序 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...