当前位置: 首页 > Web前端 > HTML

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

时间:2023-04-02 16:29:54 HTML

第一次看到这个的时候,我惊呆了。又看了几篇别人的文章,才明白在了解这个希尔排序之前,想先玩个小游戏,大家应该都玩过。希尔排序的原理和这个小游戏差不多。小明(选手)、安吉拉(出题者)安吉拉:请猜一个0到100之间的数字,猜的越少,得分越高。一般玩家,可能从0开始一个一个猜,0,1,2,3……一直这样猜,运气不好的话,可能要猜到99次才能猜对(这是插入排序)希尔排序是插入排序版本的升级版,主要目的是减少猜数小明最后使用/2的方式来猜数(这就是希尔排序)--------------------------------------------------答题开始小明:猜数字是50Angela:提示数字太小小明:那么范围肯定是在(50~100)之间,这次猜75。Angela:提示数字猜的太小了小明:那么范围一定要在(75~100)之间,这次猜87小明:那么范围一定要在(87~100)之间,这次猜93安吉拉:这个提示数字太大小明:那么范围必须在(87~93)之间,这次猜90Qila:提示数字太大小明:那么范围必须在(87~90)之间,这次猜89timeAngela:提示数字猜的太大了小明:那么范围一定是在(87~89)之间,还剩3个数,那你一个一个猜(插入排序)87,88,89Angela:Theanswer是88-----------------------------------------------下面进入正题。什么是希尔排序?希尔排序就是按照一个序列(简称:增量)进行分组,然后对每一组分别进行插入排序。随着增量逐渐减小,每组包含的关键词越来越多。当增量减为1时,整个序列刚好分为一组,算法终止。算法说明参考图解排序算法(二)希尔排序值得收藏的十大经典排序算法文章内容/灵感均借鉴以下内容【持续维护/更新500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件】https://www.npmjs.com/package...【使用THREE.JS实现3D城市建模(珠海市))]https://3d.noxussj.top/