7 插入排序之折半插入排序

2021-07-02 22:28:06 字數 442 閱讀 9317

7、折半插入排序

折半插入:考慮到插入第i個元素前面的i-1個元素是有序的,計算0~i-1的中間點,和i個元素進行比較,這樣完成了折半。然後不停地用上面的步驟,快速的找出第i個元素的位置。

時間複雜度:折半插入排序比直接插入排序明顯減少了關鍵字之間的比較次數,但是移動次數是沒有改變。

所以,折半插入排序和插入排序的時間複雜度相同都是o(n^2),在減少了比較次數方面它確實相當優秀,所以該演算法仍然比直接插入排序好。

空間複雜度:

折半插入排序和插入排序一樣只需要乙個多餘的快取資料單元來放第 i 個元素,所以空間複雜度是o(1),因為排序前2個相等的數在序列的前後位置順序和排序後它們兩個的前後位置順序相同,所以它是乙個穩定排序。

//折半插入排序

public static void inserthalfsort(int a)

a[j]=temp;}}

插入排序 折半插入排序

折半插入排序 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...

插入排序 折半插入排序

package sort 折半插入排序 當序列是連續儲存時,對直接插入排序進行的改進 插入位置可以更快速找到 直接插入排序a 0 用作哨兵減少條件判斷,折半插入排序不需要哨兵a 0 位置存放實際元素 public class insertsort 統一後移,空出插入位置 for j i 1 j hi...