我刚开始看这个的时候,一脸懵逼。前面又多看了几篇其他人的文章后才了解了
在理解这个希尔排序之前,我想先进行一个小游戏,大家应该都有玩过。希尔排序原理和这个小游戏差不多
小明(玩家)、安琪拉(出题者)
安琪拉:请你在 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>
参考资料
图解排序算法 (二) 之希尔排序
值得珍藏的十大经典排序算法
附加
- 此文章通过自媒体多平台公布,公布后不再进行保护,如对内容有任何异议能够到下方的 GitHub 中进行探讨
- 【继续保护 / 更新 500+ 前端面试题 / 笔记】https://github.com/noxussj/In…
- 【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/