穩定排序的一種(通俗地講,就是兩個相等的數不會交換位置) 。
常用的插入排序有:直接插入排序、折半插入排序
它們劃分的依據是在排好序的序列中尋找插入位置所使用方法的不同。
基本原理,每步將乙個待排序的物件,按其關鍵字大小,插入到前面已經排好序的一組物件適當位置上,直到物件全部插入為止。
直接插入排序
基本思想:當插入第i個物件時,前面的r[1],r[2],…,r[i-1]已經排好序,此時,用r[i]的關鍵字與r[i-1], r[i-2],…的關鍵字順序進行比較,找到插入位置即將r[i]插入,原來位置上物件向後順移。
void zjinsert (redtype r,int n)
for (int j = i - 1; j >= high + 1; --j)
arr[j + 1] = arr[j]; // 記錄後移
arr[high + 1] = arr[0]; // 插入
}}
折半插入排序演算法是一種穩定的排序演算法,比直接插入演算法明顯減少了關鍵字之間比較的次數,因此速度比直接插入排序演算法快,但記錄移動的次數沒有變,所以折半插入排序演算法的時間複雜度仍然為o(n^2),與直接插入排序演算法相同。
排序演算法之插入排序
排序演算法之插入排序 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....