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

问题28:如何理解计数排序?

时间:2023-04-02 16:00:43 HTML

什么是计数排序?计数排序不是基于比较的排序算法。它的核心是将输入的数据值转换为key,存储在附加的数组空间中。作为一种线性时间复杂度排序,计数排序要求输入数据必须是一定范围内的整数。计数排序最重要的一点是整数有一定的范围,比如0-10的范围,那么数组中的值必须是0-10之间的栗子序列:9,3,5,4,9,1,2,7,8,1,3,6,5,3,4,0,10,9,7,9首先确定序列范围是0-10,列出范围的序列,如图1所示。比如第一个整数为9,则对数组中下标为9的元素加1图1中第二个整数为3,则对数组中下标为3的元素加1,如图2图2以此类推重复遍历...遍历后的最终状态如下,如图3所示图3中数组的每个下标位置的值代表序列中对应整数出现的次数。有了这个“统计结果”,排序就很简单了。直接遍历数组,输出数组元素的下标值,元素的值是几倍,输出0,1,1,2,3,3,3,4,4,5,5,6,7,7,8,9,9,9,9,10最终输出的序列已经排好了这个时候可能有人会问,如果序列的最小值不是从0开始怎么办?这时候就需要计算偏移量了。如何计算偏移量?取序列的最小值作为偏移量。比如最小值为90,那么整数95对应的统计数组下标就是95-90=5最喜欢的十大经典排序算法漫画:什么是计数排序?文章内容/灵感借鉴自以下内容【持续维护/更新500+前端面试题/笔记】https://github.com/noxussj/In...【大数据可视化图表插件-in]https://www.npmjs.com/package...【使用THREE.JS实现3D城市建模(珠海市)】https://3d.noxussj.top/