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

排序-----计数排序(非比较排序)

原理:

存在的问题:数组空间浪费

所以要相对映射,不要绝对映射

calloc()函数的功能是:为num个大小为size的元素开辟一块空间,并且把空间的每个字节初始化为0.

// 时间复杂度:O(N+range)
// 只适合整数/适合范围集中
// 空间范围度:O(range)
void CountSort(int* a, int n)
{int min = a[0], max = a[0];for (int i = 1; i < n; i++){if (a[i] < min)min = a[i];if (a[i] > max)max = a[i];}int range = max - min + 1;//printf("%d\n", range);int* count = (int*)calloc(range, sizeof(int));if (count == NULL){perror("calloc fail");return;}// 统计次数for (int i = 0; i < n; i++){count[a[i] - min]++;}// 排序int j = 0;for (int i = 0; i < range; i++){while (count[i]--){a[j++] = i + min;}}free(count);
}

http://www.lryc.cn/news/445291.html

相关文章:

  • [Python]案例驱动最佳入门:Python数据可视化在气候研究中的应用
  • PyQt5 导入ui文件报错 AttributeError: type object ‘Qt‘ has no attribute
  • Unity中Rigidbody 刚体组件和Rigidbody类是什么?
  • MySQL学习笔记(持续更新中)
  • sqlserver插入数据删除数据
  • [51单片机] 简单介绍 (一)
  • 6个岗位抢1个人,百万年薪抢毕业生?大厂打响AI人才战
  • erlang学习:Linux命令学习3
  • 力扣41 缺失的第一个正数 Java版本
  • 第五篇:Linux进程的相关知识总结(1)
  • 企业级Windows server服务器技术(1)
  • 【30天玩转python】单元测试与调试
  • 13.第二阶段x86游戏实战2-动态模块地址
  • 【WebLogic】WebLogic 11g 控制台模式下安装记录
  • 失踪人口回归(明天开始继续更新学习内容)
  • AIGC对网络安全的影响
  • golang学习笔记25——golang 实现 MD5加密、RSA加密 和 Base64编码
  • 2024海外电商数据分析之印度篇
  • JavaWeb纯小白笔记02:Tomcat的使用:发布项目的三种方式、配置虚拟主机、配置用户名和密码
  • 为什么数据需要 QA 流程
  • Spring Boot 学习之路 -- 基础认知
  • JavaScript --json格式字符串和对象的转化
  • LabVIEW提高开发效率技巧----采用并行任务提高性能
  • 裸土检测算法实际应用、裸土覆盖检测算法、裸土检测算法
  • 深入剖析链表反转:多语言实现与高级语法特性20240924
  • 【数据结构初阶】链式二叉树接口实现超详解
  • 力扣189 轮转数组 Java版本
  • RMAN异机恢复数据库记录
  • JVM 调优篇7 调优案例4- 线程溢出
  • C++类与对象(三)