# 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...