希尔排序思路:

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

序列变化:

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

 

相关文章:

  • 2021-05-24
  • 2021-11-29
  • 2021-11-04
  • 2021-12-25
  • 2021-11-25
  • 2022-01-26
  • 2021-07-02
猜你喜欢
  • 2022-03-04
  • 2021-11-05
  • 2021-07-07
  • 2022-12-23
  • 2021-06-02
相关资源
相似解决方案