希尔排序思路:
序列变化:
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