首页 > 编程语言 > 详细

无人问津的排序(一)----希尔排序

时间:2018-06-23 18:20:01      阅读:212      评论:0      收藏:0      [点我收藏+]

希尔排序思路:

技术分享图片

序列变化:

d=4

技术分享图片

d=2

 技术分享图片

 d=1

 技术分享图片

def shell_sort(li):
    gap = len(li)//2 # 间隔多少张牌
    while gap >= 1:  # 间隔的排数大于一张
        for i in range(gap,len(li)):  # 每次看手里的一张牌 ,为什么从gap看,因为手里有gap张牌,也就是gap组
            tmp = li[i] # 取出一张牌
            j = i - tmp # j 为手里的前一张牌,i 为当前的牌 - 一组牌中的gap张
            while j >= 0 and tmp < li[j]:
                li[j + gap] = li[j]  # 给新的牌腾地
                j -= gap # 另一张牌所对应的牌
            li[i - gap] = tmp
            gap /= 2

 

无人问津的排序(一)----希尔排序

原文:https://www.cnblogs.com/zhuifeng-mayi/p/9218077.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!