Python 演算法 - 希爾排序
阿新 • • 發佈:2018-11-08
# coding=utf-8
# 希爾排序
def shell_sort(lst=[]):
"""
希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法,時間複雜度為O(nlogn)。
該方法因DL.Shell於1959年提出而得名。希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序;
隨著增量逐漸減少,每組包含的關鍵詞越來越多,當增量減至1時,整個檔案恰被分成一組,演算法便終止。
: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