1.设置一个小于待排序列表长度的步长将列表分成若干个新的列表,然后对每个新的列表分别进行插入排序
2.将排序好的新列表分成更小的列表,然后再对更小的列表进行插入排序
3.再将更小的列表进行分组和排序
4.重复上面的过程,一直到列表的长度为一不能继续分组为止,此时的列表就是有序的
def shell_sort(arr):
n = len(arr)
gap = n // 2
while gap >= 1:
for j in range(gap, n):
i = j
while i > 0:
if arr[i] < arr[i - gap]:
arr[i], arr[i - gap] = arr[i - gap], arr[i]
i -= gap
else:
break
gap //= 2
li = [8, 4, 8, 3, 9, 7, 3, 2, 1, 5, 6, ]
shell_sort(li)
print(li)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2621041184@qq.com