排序(二) 希爾排序

2021-07-30 07:20:36 字數 670 閱讀 9370

希爾排序(shell』s sort)又稱「縮小增量排序」(diminishing increment sort),它也是一種屬於插入排序類的方法,但在時間效率上較 排序(一)中的幾種排序方法有較大的改進。

基本思想:先將整個待排記錄序列分割成為若干個子串行分別進行直接插入排序,待整個序列中的記錄「基本有序」時,再對全體記錄進行一次直接插入排序。

具體實現(其中shellinsert( ) 表示一次插入排序,即排序(一)中提到的):

時間複雜度:

這是乙個複雜的問題,難以分析。

最壞情況:θ(

n2)

穩定性:不穩定

(「由於多次插入排序,我們知道一次插入排序是穩定的,不會改變相同元素的相對順序,但在不同的插入排序過程中,相同的元素可能在各自的插入排序中移動,最後其穩定性就會被打亂,所以希爾排序是不穩定的。」參考這裡)

特點:

《資料結構(c語言版)》(嚴蔚敏) 清華大學出版社

排序二 希爾排序

希爾排序又稱為縮小增量排序,它是一種插入排序,是直接插入排序的優化。與直接插入排序不同的是它按照間距gap分組,對間距為gap的數進行插入排序。預排序 令gap x,對間距為x的資料進行插入排序,gap數值逐漸減小gap gap 3 1 此時接近有序 直接插入排序 當gap 1 為有序數列 希爾排序...

排序 二 希爾排序,堆排序

1.原理 希爾排序法又稱縮小增量法。希爾排序法的基本思想是 先選定乙個整數,把待排序檔案中所有記錄分成個組,所有距離為的記錄分在同一組內,並對每一組內的記錄進行排序。然後,取,重複上述分組和排序的工作。當到達 1時,所有記錄在統一組內排好序。希爾排序是對直接插入排序的優化。當gap 1時都是預排序,...

排序演算法(二) 希爾排序

主要思想 先將待排序列分割成若干個子串行,在子串行內分別進行直接插入排序,待整個序列基本有序時,再對全體記錄進行直接插入排序。例如 第一趟 d 5,將所有相距為 5 的記錄分為一組,從而將整個序列分割成了 5 個子序列。第二趟 d 2,將所有相距為 2 的記錄分為一組,從而將整個序列分割成了8 個子...