ShellSort 希尔排序
# ShellSort希尔排序_Python实现
def shell_sort(li):
n = len(li)
# gap间隔为长度除2
gap = n // 2
while gap > 0:
for i in range(gap, n):
while i >= gap and li[i - gap] > li[i]:
li[i], li[i - gap] = li[i - gap], li[i]
i -= gap
gap //= 2
return li
list = [1, 55, 98984, 65, 165, 356, 54, 3, 645, 74, 64, 35]
li = shell_sort(list)
print(li)
希尔排序:
希尔排序使用了两个循环和一个遍历
希尔排序就是通过控制间隔完成大致分类, 然后分隔长度折半,继续对比,继续分类.然后再折半,再对比
容易混淆的地方在于, 当满足交换条件之后, 还要向前一步对比,以免更换后的数值比上一步还小.

浙公网安备 33010602011771号