希尔排序
希尔排序使用插入排序的思想进入间隔排序
例如从d=4开始排序,i=4,8,12·····这几个看成一排进行插入排序,之后d=2时,同意如此,直到d=1
def insert_shell_sort(li,gap):
for i in range(gap,len(li)):
tmp = li[i] #摸到的第i张牌
j= i-gap #手中牌的下标
while j>=0 and li[j]>tmp:
li[j+gap]=li[j]
j-=gap
li[j+gap]=tmp
return li
def shell_sort(li):
d=len(li)//2
while d>=1:
insert_shell_sort(li,d)
d //=2
import random
li=list(range(100))
print(li)
random.shuffle(li)
print(li)
shell_sort(li)
print(li)