希尔:分割成多个子序排序,逐渐减少间隔。
def shell_sort(a):
n=len(a)
gap=n//2
while gap>=1:
for i in range(gap,n):
j=i
while j>0:
if a[j]<a[j-gap]:
a[j],a[j-gap]=a[j-gap],a[j]
j-=gap
else:
break
gap//=2