排序演算法 希爾排序

2021-04-12 15:44:32 字數 676 閱讀 7241

如果乙個排序演算法,每次只把諸專案移動乙個位置,則它的平均執行時間至少要和n2成比例.因為在這個排序演算法執行的過程當中,每個記錄平均都必須遍歷n / 3個位置,因此如果要對直接插入排序進行有效的,實質性的改進的話,就要有一種演算法,它可以使記錄做長距離的跳躍,而不是一步一步的挪動.

希爾排序也是一種插入排序,它是在直接插入的基礎上改進而來的.它也可以叫做縮小增量排序.

直接插入排序在資料"基本有序"的時候效率是比較高的,希爾排序的思想就是先使資料基本有序後再直接插入排序.

演算法:把待排序的資料根據增量序列分階段的分組進行直接插入排序.

**:-  9 * 2+ 1 或者是 4 -  3  *  2 + 1這兩個式子得來的.這個增列序列在最壞的情況下執行時間為o(n4 / 3),平均的情況是o(n7 / 6)

還有一種hibbard

增量,它是1, 3, 7, .......2k - 1.這個序列可以在實踐和理論上給出更好的結果.

donald e.knuth在他的書中建議到可以選擇下面的公式來產生增量序列:

設h1 = 1, hi + 1 = 3hi + 1,而且當hi - 2 >= n時以hi停止.

還應該提到的是,無論怎樣選擇增量序列,最後乙個增量必定是1.另外一點,一定不要選2的冪次的增量,那樣的話所有的增量都是偶數,並且公比是2,那會使你的希爾排序和直接插入排序相差無幾,執行時間約為().

排序演算法 希爾排序

摘要 排序演算法有很多,最簡單的有氣泡排序和插入排序,這兩種方法都具有o n 2 的時間界.我們想要討論的是具有更好的時間界的排序演算法,比如希爾排序.1 希爾排序的思路是通過比較一定間距的元素來進行排序,最後再對所有相鄰元素進行一次插入排序.2 希爾排序最重要的引數是增量序列 h1,h2,ht 只...

排序演算法 希爾排序

希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法。希爾排序通過將比較的全部元素分為幾個區域來提公升插入排序的效能。這樣可以讓乙個元素可以一次性地朝最終位置前進一大步。然後演算法再取越來越小的步長進行排序,演算法的最後一步就是普通的插入排序,但是到了這步,...

排序演算法 希爾排序

希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本,希爾排序是非穩定排序演算法。希爾排序是基於插入排序的以下兩點性質而提出改進方法的 1 插入排序在對幾乎已經排好序的資料操作時,效率高,即可以達到線性排序的效率 2 插入排序一般來說是低效的,因為插入排序每次只能將資料移動一位。希爾排...