插入排序的基本思想是將資料插入到適合的位置。有兩種方法
直接插入排序
將資料插入到有序序列的合適位置,插入位置後面的資料相應位移。
void
insertsort
(int a,
int n)
}
希爾排序,直接插入排序最耗時的就是每次插入都要移動資料。如果插入前,資料就已經基本有序了,就會降低複雜度。因此希爾排序將原始陣列分割成子序排序,然後再使用直接插入排序。如下面**所示,把d換成1,就是直接插入排序。
void
shellsort
(int a,
int n)
a[j+d]
= t;
} d=d/2;
}}
演算法複雜度分析 演算法
最差時間複雜度
平均時間複雜度
穩定性空間複雜度
直接插入排序
o(n^2)
o(n^2)
穩定o(1)
希爾排序
o(n^2)
o(n^1.5)
不穩定o(1)
排序演算法之插入排序
排序演算法之插入排序 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....