排序演算法之插入排序

2021-10-01 07:03:54 字數 1044 閱讀 8373

插入排序的基本思想是:每步將乙個待排序的記錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。

1、直接插入排序

// 直接插入排序的演算法思路:

// (1) 設定監視哨arr[0],將待插入記錄的值賦值給arr[0];

// (2) 設定開始查詢的位置j;

// (3) 在陣列中進行搜尋,搜尋中將第j個記錄後移,直至arr[0]≥arr[j]為止;

// (4) 將arr[0]插入arr[j + 1]的位置上。

// 直接插入排序演算法:

public

zjinsert

(arr: number)

:void

arr[j +1]

= temp;

//標記點賦值

}}

2、折半查詢插入,在插入過程的查詢過程用上二分查詢

// 	折半插入排序的演算法思想:

// 演算法的基本過程:

// (1)計算 0 ~ i - 1 的中間點,用 i 索引處的元素與中間值進行比較,如果 i 索引處的元素大,說明要插入的這個元素應該在中間值和剛加入i索引之間,反之,就是在剛開始的位置 到中間值的位置,這樣很簡單的完成了折半;

// (2)在相應的半個範圍裡面找插入的位置時,不斷的用(1)步驟縮小範圍,不停的折半,範圍依次縮小為 1/ 2 1/ 4 1/ 8 .......快速的確定出第 i 個元素要插在什麼地方;

// (3)確定位置之後,將整個序列後移,並將元素插入到相應位置。

public

binaryinsert

(arr: number)

:void

else

}//容錯

for(

let j = i -

1; j >= left; j--

)//進行標記點賦值

arr[left]

= tmp;}}

3、希爾排序法

參考:https:

80604690

排序演算法之插入排序

排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...

排序演算法之插入排序

排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...

排序演算法之插入排序

本節主要分析插入排序演算法的直接插入排序和希爾 shell 排序 又稱縮小增量排序 1.直接插入排序 該排序是最簡單的排序方法,其基本思想是 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至i n為止,依次將r i 插入當前的有序區r 1....