109,排序-希尔排序

Posted 数据结构和算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了109,排序-希尔排序相关的知识,希望对你有一定的参考价值。

希尔排序也成缩小增量排序,原理是将待排序列划分为若干组,每组都是不连续的,有间隔step,step可以自己定,但间隔step最后的值一定是1,也就说最后一步是前后两两比较。间隔为step的默认划分为一组,先在每一组内进行排序,以使整个序列基本有序,然后再减小间隔step的值,重新分组再排序……不断重复,直到间隔step小于1则停止。还是先看代码

代码还是比较简单的,我们画个图来说明一下

109,排序-希尔排序

上面的排序其实和冒泡排序很像,只不过冒泡排序是每次都是间隔为1相邻的两个之间进行比较,但希尔排序是间隔为step,还是有一定区别的,我们再看另一种写法

109,排序-希尔排序

首先它是把待比较的变量保存到temp中,然后往前找,如果前面的比他大,就会把前面的值挪到当前位置,然后再往前找,如果还比当前大那么还挪,直到循环完为止,然后再把当前保存的temp值放到最前面挪动的那个值。这个挪动和前面介绍的插入排序的挪动有点类似,只不过插入排序的挪动是一个个往前比较(二分法插入例外),而这个挪动是每间隔step进行比较然后确定是否挪动。我们上面使用的间隔是数组长度的一半,这个间隔实际上是可以自己定的,但一定要保证间隔最后的一步是1即可,希尔排序中大家都比较认可的一种计算间隔的公式是step = step * 3 + 1;我们再来看一下代码

关注,点赞,评论,转发

以上是关于109,排序-希尔排序的主要内容,如果未能解决你的问题,请参考以下文章

Algs4-2.1.29希尔排序的递增序列

❤️数据结构入门❤️(4 - 8)- 希尔排序

希尔排序

希尔排序的介绍和希尔排序基本思想以及代码实现

希尔排序

希尔排序