希尔排序

  希尔排序,是直接插入排序的改进方法,它通过比较相距一定间隔的元素来进行,各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。

 

  代码实现

  

# -*- coding = utf-8 -*-
# @Author: Wchime
# @time: 2023/1/27 16:53
# @file: 希尔排序.py


def sort_shell(li):
    """希尔排序"""
    n = len(li)
    gap = n // 2
    while gap >= 1:
        for j in range(gap, n):
            i = j
            while i >0:
                if li[i] < li[i-gap]:
                    li[i], li[i - gap] = li[i - gap], li[i]
                    i -= gap
                else:
                    break
        gap //= 2


if __name__ == "__main__":

    l = [1, 9, 4, 8, 2, 3, 7]
    sort_shell(l)
    print(l)

 

posted @ 2023-01-28 17:11  Wchime  阅读(31)  评论(0)    收藏  举报