排序算法—希尔排序

news/2025/2/12 21:03:42/

希尔排序简介

希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。

希尔排序基本思想把待排序的数列分为多个组,而后再对每个组进行插入排序,先让数列整体大致有序,然后多次调整分组方式,是数列更加有序,最后再舒勇一次插入排序,使整个数列将全部有序。

希尔排序的基本思想是:

把记录按步长 gap 分组,对每组记录采用直接插入排序方法进行排序。

随着步长逐渐减小,所分成的组包含的记录越来越多,当步长的值减小到 1 时,整个数据合成为一组,构成一组有序记录,则完成排序。

我们来通过演示图,更深入的理解一下这个过程。

 

实例: 

待排序的序列为     25,5, 14 ,39,6,31,23,18,9,1,11    。 共计11个数,增量序列的取值依次为:5,2,1   。

 

然后先算增量 为5时 的排序      25                           31                                 11

                                                         5                           23

                                                              14                            18

                                                                    39                            9

                                                                             6                            1

 

他们每一行是一个分组, 然后将他们进行插入排序,然后合并,     得到 增量为5 之后的到的序列为  :       11   5   14  9  1  25  23  18  39  6  31  

之后就是将上面得到的序列  在进行增量为2 进行分组。     11         14         1         23         39        31

                                                                                                     5          9          25        18         6

 

将上面两行进行 分别  直接插入排序,然后在进行合并。   后得到  1  5   11    6  14  9   23   18   31   25   39

 然后在进行一次 增量为1  的序列分组,, 这次就可以直接 在上面的序列进行 直接插入排序。    最后得到 有序序列, 1   5  6  9  11  14  18  23  25  31  39  。

 

 

  

 

 

 


http://www.ppmy.cn/news/824863.html

相关文章

Ngork Natapp内网穿透工具解析

最近在总结和归纳整理梳理知识点,联想到了很多很有意思的工具和实际需求场景,比如说内网穿透Ngork免费版,当然现在也支持付费版。下面还是详细解说一下Ngork如何操作吧 1.首先到官网下载Ngork Windows版本 Ngork下载指南 2.阅读文档 入门的…

希尔排序(java实现)

一、概念及其介绍 希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。 希尔排序又称缩小增量排序,因 DL.Shell 于 1959 年提出而得名。 它通过比较相距一定间隔的元素来进行,各趟比较所用的距离随着算法的进行而减小…

【数据结构排序算法(二)】希尔排序

基础数据结构之八大排序算法(二) ②希尔排序(对直接插入排序的优化),最小增量排序 时间复杂度:O(1.3)~ O(1.5) 通过最小增量数组对数据进行排序&#xff0c…

排序算法 —— 希尔排序(图文超详细)

文章目录 希尔排序(直接插入排序的优化)1.分组思想2.缩小增量的过程3.排序步骤3.1 排序五组数据的情况3.2 排序两组数据的情况3.3 排序一组数据的情况 4.代码分析4.1 如何设置数据组数4.2 直接插入排序实现思路 5. 整体代码实现 排序算法: 1、…

希尔排序原理和算法图解

原理: 这个是基于插入排序的改进。将待排序的记录数目减少,所以,我们需要采用跳跃分割策略:将相距某个分量的记录组成一个子序列分别进行插入排序得到的结果是基本有序。 算法讲解: void ShellSort(SqList *L) {int …

希尔排序详解

一.思路 希尔排序是建立在插入排序的思想之上的,因为插入排序在应对数组接近有序的情况下,时间复杂度接近O(N),故如果对数组先进行预排序,使数组接近有序,再进行直接插入排序,能大幅度降低时间复杂度 二.实…

排序算法——希尔排序

希尔排序 什么是希尔排序为什么不直接使用插入排序希尔排序代码实现 什么是希尔排序 希尔排序也叫做:缩小增量排序。 分组(分组的组数需要循环递减,直到减为1)排序。 先将待排序序列分成若干组,然后使用直接插入排序在…

入坑机器学习:四,单变量线性回归

开始我们机器学习的第一个算法。 还是借用吴老师的例子: 这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集。比方说&…