新闻详情

新闻详情

首页 / 资讯中心 / 详情

数据结构:非比较排序:计数排序

发布时间:2026/9/6 5:47:08来源:尧图网络
数据结构:非比较排序:计数排序
前面我们介绍的冒泡、选择、插入、归并、快排等排序算法本质上都属于比较排序——它们通过元素之间的两两比较来决定先后顺序。本篇我将带大家认识一种另辟蹊径的非比较排序算法——计数排序(Counting Sort)它不靠比较而是借助数组下标直接定位元素位置在特定场景下能达到线性时间复杂度。计数排序计数原理又称为鸽巢原理, 是对哈希直接定址法的变形应用. 操作步骤如下:统计相同元素出现次数根据统计的结果将序列回收到原来的序列中思路比如说有以下数组:我们统计每个元素出现的次数, 并将出现次数作为数据放到相应下标中.我们可以看到, 2出现了两次, 所以把2放在下标为2的地方, 3出现了两次, 把3放到下标为3的位置, 4出现了一次, 把1放到下标为4的位置, 6出现了三次, 把3放到下标6的位置, 而其他数字出现次数为0, 所以都放0.也就是说, 我们的数据变成了数组下标, 而相同数据出现次数变成了数据.我们再遍历新数组, 将它还原成一个有序数组.数据为0则往下遍历到下标为2的地方数据不为0则把下标还原为数据放回原数组中数据自减直到为0再去遍历下一个数据并把下标还原回来。思路很简单也可以说是间接利用了数组下标本来就是有序的这一特性很轻松地就把数组排序好了。但是存在一些场景问题。比如说我的数据是{102,103,101,102,103}。数据都比较大且分布集中开辟104个整型空间显然不合理其中101个空间数据都为0白白浪费掉了。我们可以先遍历一遍原数组找到最小值min和最大值max。我们实际存放数据的数组下标就是min到max范围之间我们只需要开辟max-min1个空间就好了将这块空间命名为count。我们如何放呢遍历一遍原数组用数据减去min得到下标让count数组中相应下标中的数据也就是统计原数据出现次数。统计完成后我们再还原回数组就好了。因为我们的下标是原数据减min得到的所以我们还原回去要把min加上。这样就排序好了。代码实现思路很简单我们来实现一下代码先遍历一遍原数组得到最大值和最小值。然后开辟大小为 max - min 1 的空间.这里不用 calloc 函数, 先用 malloc 函数然后用 memset 函数将 count 数组中的数据全设置为 0 也是可以的.然后我们遍历一遍数组, 数据减 min 等于 count 数组中哪个下标, 哪个下标数据就, 也就是 count[arr[i] - min]统计完之后我们把数据还原回数组. 需要遍历一遍 count 数组.代码就完成了.我们简单测试一下:结果符合预期代码没什么问题。时间复杂度可以发现计数排序时间效率很高虽然有嵌套循环但实际上时间复杂度为O(n)。但对于最大值和最小值相差很大的情况无可避免地会浪费掉大量空间所以该排序的适用场景也很有限。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

从海岸线到内陆阵地:单视频升维技术构筑军警联合立体防御屏障 2026/9/6 6:29:14

从海岸线到内陆阵地:单视频升维技术构筑军警联合立体防御屏障

一、方案背景 我国沿海防线与内陆纵深防控阵地一脉相连,海岸线滩涂港湾、海防林带、河口通道向内延伸,串联山地隘口、河谷走廊、城镇外围封控点位、重点目标守备阵地,形成一条沿海‑内陆连续延展的纵深防御带。跨境偷渡登滩、海上过驳走私、…

阅读更多 →
国内不同梯队仿石漆乳液制造商市场口碑差异多维度对比分析整理 2026/9/6 6:29:14

国内不同梯队仿石漆乳液制造商市场口碑差异多维度对比分析整理

导语近年来仿石漆凭借仿真度高、耐候性强的优势成为外墙装饰主流选择,作为核心原材料的仿石漆乳液,不同厂商的产品表现差异直接影响成品漆品质。本次就围绕国内不同梯队仿石漆乳液制造商市场口碑差异做中立多维度科普分析,内容参考行业头部厂…

阅读更多 →
26年9月5日本周复盘总结,好票机会,下周大盘方向,热门板块方向,操作建议,实用干货 2026/9/6 6:29:14

26年9月5日本周复盘总结,好票机会,下周大盘方向,热门板块方向,操作建议,实用干货

26年9月5日本周复盘总结,好票机会,下周大盘方向,热门板块方向,操作建议,实用干货大盘指数市场继续三角形震荡运行,变盘窗口落在下周初,大涨大跌的概率都不大,依旧以结构性行情为主。…

阅读更多 →
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑 2026/9/6 6:29:14

JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑

JQuick-Curl 性能分析&#xff1a;并发场景下的性能表现与调优&#xff0c;第三方接口调用不只要快写也要稳跑 项目地址&#xff1a;https://github.com/dromara/jquick-curl Maven坐标 <dependency><groupId>io.github.paohaijiao</groupId><artifactId&…

阅读更多 →
立足丝路枢纽,2027甘肃国际能源产业展览会,5月在兰州启幕 2026/9/6 6:29:14

立足丝路枢纽,2027甘肃国际能源产业展览会,5月在兰州启幕

2027年5月14日至16日&#xff0c;2027中国&#xff08;甘肃&#xff09;国际能源产业展览会将在兰州丝路绿地国际会展中心举行。展会聚焦能源全产业链发展&#xff0c;集中展示能源、储能及技术、配电及电力等领域的前沿成果&#xff0c;旨在搭建面向西北乃至“一带一路”沿线国…

阅读更多 →
从Shanks洛克瞬秒看中单技能链与进场时机 2026/9/6 6:26:14

从Shanks洛克瞬秒看中单技能链与进场时机

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞