希爾排序(shellsort),也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。
希爾排序是基於插入排序的以下兩點性質而提出改進方法的:
我們來看下希爾排序的基本步驟,在此我們選擇增量gap=length/2,縮小增量繼續以gap = gap/2的方式,這種增量選擇我們可以用乙個序列來表示,,稱為增量序列。希爾排序的增量序列的選擇與證明是個數學難題,我們選擇的這個增量序列是比較常用的,也是希爾建議的增量,稱為希爾增量,但其實這個增量序列不是最優的。此處我們做示例使用希爾增量。
資料結構 排序演算法系列總結
目錄 1 空間複雜度 2 穩定性 3 執行時間 4 目前預設的sort內建函式排序函式 5 六種常用排序方法 空間複雜度產生的原因有兩個 重新定義了一塊空間用於儲存資料 遞迴產生了棧空間 氣泡排序 選擇排序 堆排序和插入排序屬於原地實現排序,因此空間複雜度為常數級別 快速排序,在演算法中雖然沒有使用...
資料結構與演算法系列 排序 8 1 氣泡排序
核心思想 氣泡排序是一種典型的 交換排序 通過比較相鄰元素大小來決定是否交換位置 氣泡排序的思想 不停地比較相鄰的兩個記錄,如果相鄰的兩個記錄的次序是反序則交換,直到所有的記錄都已經排好序了 使關鍵字最小或最大的記錄如氣泡一般逐漸往上 漂浮 直至 水面 所以叫氣泡排序 比較相鄰的元素。如果第乙個比第...
資料結構與演算法系列 基數排序
基數排序與其他的排序方法 都不同,它不需要比較關鍵字的大小。演算法的時間複雜度是o n 相比於快速排序的o nlgn 從表面上看具有不小的優勢.但事實上可能有些出入,因為基數排序的n可能具有比較大的係數k.因此在具體的應用中,應首先對這個排序函式的效率進行評估.它是根據關鍵字中各位的值,通過對排序的...