Python 演算法 希爾排序

2021-07-30 14:52:45 字數 680 閱讀 9438

# coding=utf-8

# 希爾排序

defshell_sort

(lst=):

""" 希爾排序(shell sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法,時間複雜度為o(nlogn)。

該方法因dl.shell於2023年提出而得名。希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序;

:param lst:

:return:

"""count = len(lst)

step = 2

group = count / step

while group > 0:

for i in range(0, group):

j = i + group

while j < count:

k = j - group

val = lst[j]

while k >= 0:

if lst[k] > val:

lst[k + group] = lst[k]

lst[k] = val

k -= group

j += group

group /= step

return lst

Python排序演算法 希爾排序

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

排序演算法之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...