Python实现希尔排序算法

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时,结束这个循环,整个排序过程结束。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值