1. 程式人生 > >Python 演算法 - 希爾排序

Python 演算法 - 希爾排序

# 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