希尔排序(希尔排序c语言实现)

网友投稿 251 2022-08-07

希尔排序(希尔排序c语言实现)

一.思想

希尔排序是一种分组插入排序算法。

首先取一个整数d1=n/2,将元素分为d1个为一组,每组相邻量元素之间距离为d1,两组数据一一进行对比按大小,从新分配两组

如[1,3,0,2]第一次排序后变成[0,2,1,3]

取第二个整数d2=d1/2,重复上述分组排序过程,直到di=1,即所有元素在同一组内进行直接插入排序。

按上面那个简单例子走第二次排序为

[0,2,1,3]按间隔1进行对比第一次然后依次变成

0与2比,0比2小顺序不变

[0,2,1,3]

2与1比,1比2小1去前面

[0,1,2,3]

依次类推...全部走完就是排好了

[0,1,2,3]

二.代码

这是网上找的精简后的代码,我自己撸的和屎一样很乱

def shell_sort(li):

gap = len(li)//2

while gap>0:

for i in range(gap,len(li)):

tmp =li[i]

j = i - gap

while j >=0 and tmp

li[j+gap]=li[j]

j -=gap

li[j+gap]=tmp

gap /= 2

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python基础-匿名函数和内置函数(用匿名函数定义函数)
下一篇:python lanbda匿名函数(20)(python能做什么)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~