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