排序算法python版(4)-希尔排序算法(python 希尔排序)

网友投稿 285 2022-08-23


排序算法python版(4)-希尔排序算法(python 希尔排序)

def shell_sort(datas): count=0 gap=len(datas)//2 while gap>0: index=0 for i in range(gap,len(datas)): index+=1 temp=datas[i] for j in range(i,0,-gap): if temp

执行详细结果如下:

当gap = 5 时,经过第 1 轮插入排序后的结果: [5, 9, 8, 7, 6, 10, 4, 3, 2, 1, 0]当gap = 5 时,经过第 2 轮插入排序后的结果: [5, 4, 8, 7, 6, 10, 9, 3, 2, 1, 0]当gap = 5 时,经过第 3 轮插入排序后的结果: [5, 4, 3, 7, 6, 10, 9, 8, 2, 1, 0]当gap = 5 时,经过第 4 轮插入排序后的结果: [5, 4, 3, 2, 6, 10, 9, 8, 7, 1, 0]当gap = 5 时,经过第 5 轮插入排序后的结果: [5, 4, 3, 2, 1, 10, 9, 8, 7, 6, 0]当gap = 5 时,经过第 6 轮插入排序后的结果: [0, 4, 3, 2, 1, 5, 9, 8, 7, 6, 10]当gap = 2 时,经过第 1 轮插入排序后的结果: [0, 4, 3, 2, 1, 5, 9, 8, 7, 6, 10]当gap = 2 时,经过第 2 轮插入排序后的结果: [0, 10, 3, 4, 1, 5, 9, 8, 7, 6, 2]当gap = 2 时,经过第 3 轮插入排序后的结果: [0, 10, 1, 4, 3, 5, 9, 8, 7, 6, 2]当gap = 2 时,经过第 4 轮插入排序后的结果: [0, 10, 1, 4, 3, 5, 9, 8, 7, 6, 2]当gap = 2 时,经过第 5 轮插入排序后的结果: [0, 10, 1, 4, 3, 5, 9, 8, 7, 6, 2]当gap = 2 时,经过第 6 轮插入排序后的结果: [0, 10, 1, 4, 3, 5, 9, 8, 7, 6, 2]当gap = 2 时,经过第 7 轮插入排序后的结果: [0, 10, 1, 4, 3, 5, 7, 8, 9, 6, 2]当gap = 2 时,经过第 8 轮插入排序后的结果: [0, 10, 1, 4, 3, 5, 7, 6, 9, 8, 2]当gap = 2 时,经过第 9 轮插入排序后的结果: [0, 10, 1, 4, 2, 5, 3, 6, 7, 8, 9]当gap = 1 时,经过第 1 轮插入排序后的结果: [0, 10, 1, 4, 2, 5, 3, 6, 7, 8, 9]当gap = 1 时,经过第 2 轮插入排序后的结果: [0, 1, 10, 4, 2, 5, 3, 6, 7, 8, 9]当gap = 1 时,经过第 3 轮插入排序后的结果: [0, 1, 4, 10, 2, 5, 3, 6, 7, 8, 9]当gap = 1 时,经过第 4 轮插入排序后的结果: [0, 1, 2, 4, 10, 5, 3, 6, 7, 8, 9]当gap = 1 时,经过第 5 轮插入排序后的结果: [0, 1, 2, 4, 5, 10, 3, 6, 7, 8, 9]当gap = 1 时,经过第 6 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 10, 6, 7, 8, 9]当gap = 1 时,经过第 7 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 10, 7, 8, 9]当gap = 1 时,经过第 8 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 10, 8, 9]当gap = 1 时,经过第 9 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 9]当gap = 1 时,经过第 10 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]共经过 44

当最好的情况下

def shell_sort(datas): count=0 gap=len(datas)//2 while gap>0: index=0 for i in range(gap,len(datas)): index+=1 temp=datas[i] for j in range(i,0,-gap): if temp

执行结果如下:注意,下面虽然打印了很多,但是交换或者赋值运算却未执行一次,即执行效率非常高

当gap = 5 时,经过第 1 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 5 时,经过第 2 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 5 时,经过第 3 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 5 时,经过第 4 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 5 时,经过第 5 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 5 时,经过第 6 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 2 时,经过第 1 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 2 时,经过第 2 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 2 时,经过第 3 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 2 时,经过第 4 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 2 时,经过第 5 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 2 时,经过第 6 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 2 时,经过第 7 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 2 时,经过第 8 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 2 时,经过第 9 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 1 时,经过第 1 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 1 时,经过第 2 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 1 时,经过第 3 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 1 时,经过第 4 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 1 时,经过第 5 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 1 时,经过第 6 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 1 时,经过第 7 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 1 时,经过第 8 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 1 时,经过第 9 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]当gap = 1 时,经过第 10 轮插入排序后的结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]共经过 0


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

上一篇:排序算法python版(7)-计数排序算法
下一篇:解决引入spring
相关文章

 发表评论

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