Python排序演算法 希爾排序

2021-06-18 01:19:53 字數 714 閱讀 3204

>>>#

希爾排序是插入排序的擴充套件,通過允許非相鄰的元素進行交換來提高執行效率。希爾排序最關鍵的是選擇步長,選用knuth在2023年提出的步長序列:1 4 13 40 121 364 1093 3280 ......後乙個元素是前乙個元素*3+1,非常方便選取

>>> def shellsort(seq):

...     length=len(seq)

...     inc=0

...     while inc<=length/3:

...         inc=inc*3+1

...     print(inc)

...     while inc>=1:

...         for i in range(inc,length):

...             tmp=seq[i]

...             for j in range(i,0,-inc):

...                 if tmp>> if __name__=='__main__':

...     seq=[8,6,4,9,7,3,2,-4,0,-100,99]

...     shellsort(seq)

...     print(seq)

...4

[-100, -4, 0, 2, 3, 4, 6, 7, 8, 9, 99]

>>>

Python 演算法 希爾排序

coding utf 8 希爾排序 defshell sort lst 希爾排序 shell sort 是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法,時間複雜度為o nlogn 該方法因dl shell於1959年提出而得名。希爾排序是把...

排序演算法之python希爾排序

希爾 shell 排序是一種插入排序,同時也叫縮小增量排序,算是直接插入排序的乙個優化演算法,以其設計者希爾 donald shell 的名字命名,該演算法由 1959 年公布。將待排序列以一定的步長分成子串行,把子序列進行排序,然後會繼續以更小的步長進行分子序列,並將子串行排序,最終演算法以步長為...

排序演算法 python實現希爾排序

coding utf 8 希爾排序,穩定性 是不穩定的 defshell sort alist n len alist gap n 2 取步長,總長度除2,取整數 i gap for i in range gap,n i gap,gap 1,gap 2,gap 3 n 1 while if alis...