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

希尔排序思路:

序列变化:

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

猜你喜欢

转载自www.cnblogs.com/zhuifeng-mayi/p/9218077.html
今日推荐