希爾排序

一.思想

希爾排序是一種分組插入排序算法。python

  • 首先取一個整數d1=n/2,將元素分爲d1個爲一組,每組相鄰量元素之間距離爲d1,兩組數據一一進行對比按大小,重新分配兩組

如[1,3,0,2]第一次排序後變成[0,2,1,3]算法

  • 取第二個整數d2=d1/2,重複上述分組排序過程,直到di=1,即全部元素在同一組內進行直接插入排序。

按上面那個簡單例子走第二次排序爲shell

[0,2,1,3]按間隔1進行對比第一次而後依次變成code

0與2比,0比2小順序不變排序

[0,2,1,3]class

2與1比,1比2小1去前面數據

[0,1,2,3]sort

依次類推...所有走完就是排好了di

[0,1,2,3]while

二.代碼

這是網上找的精簡後的代碼,我本身擼的和屎同樣很亂

def shell_sort(li):
    gap = len(li)//2
    while gap>0:
        for i in range(gap,len(li)):
            tmp =li[i]
            j = i - gap
            while j >=0 and tmp <li[j]:
                li[j+gap]=li[j]
                j -=gap
            li[j+gap]=tmp
        gap /= 2
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息