思想:插入排序的改进(分组插入排序)
1:先安装一定的间隔将待排序的序列分组,每组内进行插入排序
2:缩小间隔
代码:
def shell_sort(alist):
n=len(alist)
gap=n//2 #
while gap>0:
for i in range(gap,n):
while i>0:
if alist[i]<alist[i-gap]:
alist[i],alist[i-gap]=alist[i-gap],alist[i]
i=i-gap
else:
break
gap//=2
最优时间复杂度:O(n^1.3)
最坏时间复杂度:O(n*n)
稳定性:不稳定