当前位置: 首页 > news >正文

【数据结构】计数排序:有时比快排还快的整数排序法

计数排序

排序思想:

        计数排序是一种非比较排序,即不通过两个数的比较来对数组排序。

        1. 统计相同元素出现次数

        2. 根据统计的结果将序列回收到原来的序列中

        了解完这种排序的思想之后,我们很容易想得到:那这样不是很费空间吗?——是的,他很费空间,所以他不适用于数的范围很大的情况。而且他只适用于整形。

        但是他很快,只要你范围小,他比快排还快。

/* 计数排序 */
void CountSort(int* a, int n)
{assert(a);int min = a[0];int max = a[0];// 遍历数组找出最大值和最小值,得到范围for (int i = 0; i < n; i++){if (a[i] < min)min = a[i];if (a[i] > max)max = a[i];}// 比如最大值为9,最小值为0,9-0=9,但实际是10个数据// 所以范围要+1int range = max - min + 1;int* countArr = (int*)malloc(sizeof(int) * range);// 初始化一下countArrmemset(countArr, 0, sizeof(int) * range);// 统计次数for (int i = 0; i < n; i++){countArr[a[i] - min]++;}// 排序int index = 0;for (int i = 0; i < range; i++){while (countArr[i]--){a[index] = i + min;index++;}}free(countArr);
}

计数排序特征总结:

        1. 计数排序在数据范围集中时,效率很高,但是适用范围及场景有限。

        2. 时间复杂度:O(N+range)

        3. 空间复杂度:O(range)

http://www.dtcms.com/a/346642.html

相关文章:

  • Linux PCI 子系统:工作原理与实现机制深度分析
  • 并查集详解
  • 第三阶段数据库-9:循环,编号,游标,分页
  • 【数据分析】宏基因组荟萃分析(Meta-analysis)的应用与实操指南
  • ES作为推荐库的设计原理
  • 配置npm国内源(包含主流npm镜像源地址)
  • Docker之nginx安装
  • 青少年机器人技术(五级)等级考试试卷(2020年9月)
  • docker的数据管理
  • 工作空间与功能包
  • 解读66页数字化转型数据中台规划应用实践解决方案【附全文阅读】
  • Q/DR/CX7.2-2020 是中国企业标准体系中
  • 【2025CVPR-目标检测方向】UniMamba:基于激光雷达的3D目标检测,采用分组高效曼巴语进行统一空间信道表示学习
  • Qt + windows+exe+msvc打包教程
  • 今日科技热点 | 量子计算突破、AI芯片与5G加速行业变革
  • Elasticsearch:什么是神经网络?
  • 算法训练营day59 图论⑨ dijkstra(堆优化版)精讲、Bellman_ford 算法精讲
  • Redis Set 类型详解:从基础命令到实战应用
  • OpenJDK 17 安全点检查机制深入解析
  • 【AI基础:神经网络】16、神经网络的生理学根基:从人脑结构到AI架构,揭秘道法自然的智能密码
  • Photoshop CS6精简版轻量级,Photoshop CS6绿色免安装,Photoshop CS6安装教程
  • Kafka 概念与概述
  • AI热点周报(8.17~8.23):Pixel 10“AI周”、DeepSeek V3.1发布,英伟达再起波澜?
  • Kafka Streams vs Apache Flink vs Apache Storm: 实时流处理方案对比与选型建议
  • 何为‘口业’,怎么看待它
  • 轻量化设计·全要素监测——新一代便携式气象站赋能户外科研与应急
  • Elasticsearch Persistence(elasticsearch-persistence)仓储模式实战
  • 改华为智能插座为mqtt本地控制
  • 强光干扰与密集场景下工服识别准确率↑89%!陌讯多模态融合算法在安全生产中的实战优化
  • 华为/思科/H3C/锐捷操作系统操作指南