算法中的希尔排序(基于python)
1.1 永远别放弃自己,哪怕所有人都放弃了你
上篇文章是我亲身经验的文章,打磨一个星期给大家的福利,看完会对你有所帮助的
不扯了步入正题希尔排序
希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序。
虽然是插入排序的一种,但必插入排序稍微难理解一点
这是网上给的图解,我感觉这图截不错,以不同颜色给大家标记,根据增量按照一样的颜色先进行插入排序,不断缩小增量,最后的增量必须是1。
#coding:utf-8
def shell_sort(alist):
"""希尔排序"""
n=len(alist)
gap=n//2 #首个增量
while gap>=1:
for i in range(gap,n):#这往下就是插入算法
j=i
while j>0:
if alist[j]<alist[j-gap]:
alist[j],alist[j-gap]=alist[j-gap],alist[j]
j-=gap
else:
break
gap//=2#缩短增量至少为1
if __name__=="__main__":
li=[5,2,1,65,85,42,32,52]
shell_sort(li)
print(li)
小编新手,文章写得不是很好,但肯定是很认真的,如果我的文章给你帮助,点赞+收藏,