希爾排序

希爾排序時(shí)插入排序的一種,是直接插入排序算法的一種更高效的改進(jìn)版本。該方法因 D.L.Shell 于 1959 年提出而得名。
希爾排序是基于插入排序而改進(jìn)的:

  1. 插入排序?qū)缀跻呀?jīng)排好序的數(shù)據(jù)操作時(shí),效率高,即可達(dá)到線性排序的效率。
  2. 插入排序一般來(lái)說(shuō)是低效的,因?yàn)椴迦肱判蛑荒軐?shù)據(jù)移動(dòng)一位。

基本思想

先取一個(gè)小于 n 的整數(shù) d1 作為第一個(gè)增量,把文件的全部記錄分組。所有距離為 d1 的倍數(shù)的記錄放在同一個(gè)組中。先在各組內(nèi)進(jìn)行直接插入排序;然后,取第二個(gè)增量d2<d1重復(fù)上述的分組和排序
直至所取的增量 dt = 1(<…<d2<d1)
即所有記錄放在同一組中進(jìn)行直接插入排序?yàn)橹埂?/p>

一般的初次取序列的一半為增量,以后每次減半,直到增量為1。

穩(wěn)定性

由于多次插入排序,我們知道一次插入排序是穩(wěn)定的,不會(huì)改變相同元素的相對(duì)順序,但在不同的插入排序過(guò)程中,相同的元素可能在各自的插入排序中移動(dòng),最后其穩(wěn)定性就會(huì)被打亂,所以 shell 排序是不穩(wěn)定的。

希爾分析

希爾排序是按照不同步長(zhǎng)對(duì)元素進(jìn)行插入排序,當(dāng)剛開始元素很無(wú)序的時(shí)候,步長(zhǎng)最大,所以插入排序的元素個(gè)數(shù)很少,速度很快;當(dāng)元素基本有序了,步長(zhǎng)很小,插入排序?qū)τ谟行虻男蛄行屎芨摺K裕柵判虻臅r(shí)間復(fù)雜度會(huì)比o(n^2)好一些。

def Shell_sort(L):
# 引用至:https://www.cnblogs.com/xubing-613/p/7286203.html
    step = len(L)/2
    while step > 0:
        for i in range(step,len(L)):            #在索引為step到len(L)上,比較L[i]和L[i-step]的大小
            while(i >= step and L[i] < L[i-step]):      #這里可以調(diào)整step從小到大或者從大到小排列
                L[i],L[i-step] = L[i-step],L[i]
                i -= step
                # print L
        step /= 2
    print L
運(yùn)行結(jié)果.png

我自己畫了個(gè)圖,給自己看


過(guò)程.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、簡(jiǎn)介 希爾排序,也稱遞減增量排序算法,是插入排序的一種更高效的改進(jìn)版本。 希爾排序是基于插入排序的以下兩點(diǎn)性質(zhì)...
    野狗子嗷嗷嗷閱讀 924評(píng)論 0 0
  • 文 | 莫若吻 (注:如果想更好的理解希爾排序,請(qǐng)先看看我的上一篇博客插入排序,希望會(huì)對(duì)你有幫助。) 一、簡(jiǎn)介 希...
    Promise_Sun閱讀 66,056評(píng)論 18 62
  • 詳細(xì)代碼請(qǐng)參考Algorithm。參考代碼比文字好理解。 希爾排序,也稱遞減增量排序算法,是插入排序的一種高速而穩(wěn)...
    一個(gè)人在路上走下去閱讀 2,884評(píng)論 2 8
  • 希爾排序(Shell Sort),一聽這名字就知道是一個(gè)叫希爾的外國(guó)人發(fā)明的排序。沒(méi)錯(cuò),他就是唐納德 希爾(Don...
    皮蛋solo粥閱讀 2,331評(píng)論 1 9
  • 程小東導(dǎo)演的《笑傲江湖之東方不敗》中,原本帶著師弟們準(zhǔn)備歸隱、從此不問(wèn)江湖事的令狐沖,卻在不經(jīng)意間又被卷入到江湖廝...
    盟盟zm閱讀 1,393評(píng)論 4 15