本文主要是介绍一起talk C栗子吧(第二十八回:C语言实例--希尔排序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
各位看官们,大家好,上一回中咱们说的是插入排序的例子,这一回咱们说的例子是:希尔排序。闲话休
提,言归正转。让我们一起talk C栗子吧!
希尔排序是对插入排序的一种改进,希尔排序的原理:先将容器分成若干子容器,然后分别对子容器进行
插入排序,当子容器全部排序完毕后,对全部元素进行一次插入排序。
希尔排序的实现步骤:
1.选取一个增量,增量的大小可以自己定义,其大小在1到容器长度之间;
2.以容器头部到增量位置的元素为起点,从起点到容器尾部依次遍历容器;
3.在步骤2中的遍历过程中,选择一个当前位置的元素,再选择相距当前位置增量个位置的元素进行比较;
4.如果步骤3中的两个元素符合排序规则,回到步骤2;
5.如果步骤3中的两个元素不符合排序规则,那么进行一次选择排序;
6.减小增量的值,减小多少,可以自己定义,我在程序中减小了1;
7.反复执行步骤2到步骤6,直到增量值等于为止。
看官们,正文中就不写代码了,详细的代码放到了我的资源中,大家可以点击这里下载使用。在希尔排序
中使用了插入排序,但是它的效率比插入排序要高,这全是增量的功劳。
各位看官,关于希尔排序的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。
这篇关于一起talk C栗子吧(第二十八回:C语言实例--希尔排序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!