希尔排序(Python3)

希尔排序举例:

待排序数列为:

710012153114968213

 

定义增量序列DK>DK-1>...>D1=1,这里定义为[ 5, 3, 1 ]

5-间隔排序:

5    6    7   
53   68   710  
530  682  71011 
5304 68212 7101113
530416821297101113

 

 

 

 

 

3-间隔排序:

4  5  8  9  11 
41 52 83 97 1113
410526831097121113

 

 

 

3-间隔排序后仍是5-间隔有序的。实际上Dk间隔在执行Dk-1间隔的排序后,仍是Dk间隔有序的。

1-间隔排序:

012345678910111213

 

 

print("希尔排序")
c=[7,10,0,12,1,5,3,11,4,9,6,8,2,13] 
def Shell_sort(c):
    N = len(c)
    for D in [5,3,1]:#[5,3,1]是一个增量序列,数据量少时可以自己定义,尽量使元素间互质;数据量多时可以参考Sedgewick增量序列等。
        for p in range(D,N):
            Tmp=c[p]
            i=p
            while i>=D and c[i-D]>Tmp:
                c[i]=c[i-D]
                i=i-D
            c[i]=Tmp    
    return c
Shell_sort(c) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值