排序 插入排序

2021-07-24 20:02:58 字數 756 閱讀 3846

插入排序:

假設第乙個元素是有序的(和圖中部分有序類似),從第二個元素開始,將標記的元素(temp)插入到前面排

好序的隊員中,要做到這一點,需要將部分已經排好序的隊員右移以騰出空間。為了移動所需的時間,就先讓被標記的元素出列(temp)(在程式中,就是用乙個臨時變數temp表示)

public

class insertionsorttest

; //假設第乙個元素是有序的,從i=1(第二個元素開始)

for(int i=1; i

array[j]=temp; //插入當前元素

}for(int i=0;i}}

插入排序的不變性:在每趟結束後,在將temp位置的項插入之後,比temp變數下標號小的資料項都是區域性有序的。

插入排序的效率:這個演算法需要多少次比較和複製呢?在第一躺排序中,最多比較一次,第二趟最多比較兩次,以此類推。最後一趟最多,比較n-1次,因此:

1+2+3+4+…..+(n-1) = n*(n-1) / 2;

然而在每一趟排序發現插入點之前,平均只有全體資料項的一半真的進行了比較,除以2得到:

n*(n-1) / 4;

複製的次數大致等於比較的次數。然而,一次複製與一次交換時間耗費不同,所以相對於隨機排序,這個演算法比氣泡排序快一倍,比選擇排序略快。

插入排序 折半插入排序

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