Shell_sort
将一组数据通过gap分组,每一组相同位置的数值当成一个列表,用插入排序的方式排列,
然后,gap继续对二取整,将源列表分成更小的组,并且把每组相同位置的数值用插入排序的排序。
import random
def shell_sort(lee):
n = len(lee)
gap = n // 2 #定义一个变量gap,确定分组长度
while gap > 0:
for i in range(gap,n): #开始插入排序
current = lee[i]
j = i - gap
if j >= 0 and lee[j] > current:
lee[j+gap] = lee[j]
j -= gap
lee[j+gap] = current #这里的j是减过gap后不满足循环条件,所以这里的j要加上gap
gap //= 2 #将源列表分成更小的组,继续排序
leeee = [random.randint(0,10000) for _ in range(10)]
print('排序前: ',leeee)
shell_sort(leeee)
print('排序后: ',leeee)
直到gap=1时,结束这个循环,整个排序过程结束。