第 24 题:如何理解希尔排序?

Posted Noxus丶SJ

tags:

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

我刚开始看这个的时候,一脸懵逼。后面又多看了几篇其他人的文章后才理解了

在了解这个希尔排序之前,我想先进行一个小游戏,大家应该都有玩过。希尔排序原理和这个小游戏差不多

小明(玩家)、安琪拉(出题者)

安琪拉:请你在 0~100 之间,猜一个数,猜的次数越少分数越高

正常玩家,可能会依次从 0 开始一个个去猜,0, 1, 2, 3 ... 这样一直下去猜,运气不好可能要猜 99 次才能正确(这个就是插入排序)

希尔排序是插入排序的升级版,主要目的是减少猜的次数

小明最后利用了/2 的方法进行猜数(这个就是希尔排序)

---------------------------------------------------

答题开始

小明:猜数字是 50

安琪拉:提示数字猜小了

小明:那么范围肯定在(50~100)之间了,这次猜是 75

安琪拉:提示数字猜小了

小明:那么范围肯定在(75~100)之间了,这次猜 87

安琪拉:提示数字猜小了

小明:那么范围肯定在(87~100)之间了,这次猜 93

安琪拉:提示数字猜大了

小明:那么范围肯定在(87~93)之间了,这次猜 90

安琪拉:提示数字猜大了

小明:那么范围肯定在(87~90)之间了,这次猜 89

安琪拉:提示数字猜大了

小明:那么范围肯定在(87~89)之间了,剩下 3 个数了,那么就可以进行一个个去猜了(插入排序)87, 88, 89

安琪拉:答案是 88

---------------------------------------------------

现在开始进入正题

什么是希尔排序?

希尔排序就是在一个序列中进行分组(简称:增量),然后对每个分组分别进行插入排序。随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个序列恰好被分成一组,算法便终止

算法描述

<img src="https://noxussj.top:3000/24/1.png"></img>

<img src="https://noxussj.top:3000/24/2.gif"></img>

参考资料
图解排序算法(二)之希尔排序
值得收藏的十大经典排序算法

文章的内容/灵感都从下方内容中借鉴

  • 【持续维护/更新 500+前端面试题/笔记】https://github.com/noxussj/In...
  • 【大数据可视化图表插件】https://www.npmjs.com/package...
  • 【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

以上是关于第 24 题:如何理解希尔排序?的主要内容,如果未能解决你的问题,请参考以下文章

《算法零基础100讲》(第38讲) 排序进阶 - 希尔排序

14-看图理解数据结构与算法系列(希尔排序)

经典排序算法系列之插入排序和希尔排序----小白理解(python)

八大数据排序法希尔排序法的图形理解和案例实现 | C++

正厚软件如何理解希尔排序的过程?

五分钟学会一个高难度算法:希尔排序