#非稳定排序算法
def shell_sort(shuzu):
n=len(shuzu)
gap=n//2#gap的最优值需要用数学算出来
while gap>=1:
for i in range(gap,n):
j=i
while j>0:#(代表该数字在移到最前面之前)
if shuzu[j]<shuzu[j-gap]:
shuzu[j],shuzu[j - gap]=shuzu[j-gap],shuzu[j]
j-=gap
else:
break
gap//=2
return shuzu
import time
if __name__=='__main__':
t1 = time.time()
a = [1, 2, 5, 79, 8, 5, 634, 6, 6, 3, ]
print(shell_sort(a))
t2 = time.time()
print(t2-t1)
测试结果