【排序算法】希尔排序

本篇文章来聊一聊希尔排序。

基本思想

上篇文章我们学习了折半插入排序,该排序算法的原理是在顺序插入查找插入过程中使用折半查找法从而提高插入效率,为此,我们可以思考一下是否还有办法能够使插入的效率更高呢?

基于此,希尔排序诞生了,希尔排序的基本思想为:

先将整个待排序序列分割成若干子序列,分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行一次直接插入排序。

图解排序过程

现有如下的一个序列:
在这里插入图片描述
我们以5为间隔,将原序列分成若干个子序列:
在这里插入图片描述
此时81、35、41就组成了一个子序列,我们对该子序列进行插入排序,结果如下:
在这里插入图片描述
因为81数值比较大,若按顺序插入或者折半插入,需要经过多次的比较才能够到达指定的插入位置,而通过希尔排序,只进行了两次比较,就让35和81非常接近最终的插入位置,这样的效率无疑是很高的。

此时35、41、81已经有序,我们再以5为间隔,得到一个子序列:
在这里插入图片描述
此时得到94、17、75组成的子序列,对其进行插入排序,结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42453117/article/details/105196989