python实现希尔排序,希尔排序c语言代码实现
Hill排序是插入排序的一种,也叫“缩减增量排序”,是直接插入排序算法的一种更高效的改进版本。希尔排序是一种不稳定的排序算法。
Hill排序是将记录按一定的增量分组,用直接插入排序算法对每组进行排序。随着增量逐渐减小,每个组包含的关键词越来越多。当增量减少到1时,整个文件正好分成一组,算法终止。
希尔排序的核心是对步长的理解,步长是两个元素之间进行相对比较的距离。随着步长的减小,相对元素的大小会逐渐区分并向两端聚集。步长为1时,会完成最后一次比较,然后出来序列顺序。
图像
如上面的例子:如果第一个排序步骤是5,那么要比较的元素对是:9-4 1-8 2-6 5-3 7-5,只有这几组元素需要用比较和交换位置进行比较;然后开始第二轮对比。
def shell_sort(项目):
谢尔分类
:参数项目:
:返回:
n=len(项目)
步骤=n //2
而步骤0:
对于范围内曲线(步长,n):
i=cur
while I=step and items[I-step]items[I]:
项目[i步],项目[i]=项目[i],项目[i步]
步骤
步骤=步骤//2
不需要很多辅助空间,和合并排序一样容易实现。Hill排序是一种基于插入排序的算法,增加了一个新的特性,提高了效率。Hill排序没有quick排序快,所以它在排序中等大小的数据时表现很好,对于排序非常大的数据,它不是最佳选择。
希尔算法在最坏情况下的执行效率和一般情况下没有太大差别。同时,最坏情况下快速排序的执行效率会很差。几乎任何排序工作,一开始都可以用Hill排序。本质上,Hill的排序算法是对直接插入排序算法的改进,减少了拷贝数,速度快了很多。
图像
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。