希尔排序 Python

提示:默默研究技术的无业游民


一、希尔排序是什么?

废话不多说,直接上代码

二、使用步骤

1.直接上代码

代码如下(示例):


if __name__=='__main__':
    arr = [4,1,99,7,9,5,341,2,-1,-3,-32,8,-100,0,6,-2,3,455]
    m=len(arr)
    n=int(m/2)

    while(n>0):
        for i in range(n):
            tmp = arr[i]
            while( i <  m-n):

                tmp=arr[i+n]
                while(i>=0):
                    if tmp<arr[i]:
                        arr[i+n]=arr[i]
                        i=i-n
                    else:
                        break
                arr[i+n]=tmp
                i=i+n
        n=int(n/2)


print(arr)


总结

1.先计算数组长度
2.我用的2为基数均分的,也可以用其他基数均分,这里就以2为基数均分
3.while是记录均分多少次的,必须这么理解,while要经过几次均分,最后跳出循环。
4.重点来了!!!
我这里想了好久好久,进入for循环,以n开始,数组长度结尾
如果后面小于前面 那么就交换位置
i=i-n !!!!!!!!!!!!!!!!!!!这里很重要 必须自己想通
arr[i]=tmp这个就是插入进去了

思路非常简单 必须自己揣摩
师父带进门
修行靠个人

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值