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

计数排序,基数排序及排序总结

稳定性:当要排序的数组有相同数据时,排序后相同数据的相对位置不变,则称该排序算法稳定,否则即为不稳定.

在这里我在说说计数排序吧,计数排序就是将给定数组中的数进行计数,在从小到大依次输出即可。简单过程如下图所示:

计数排序的时间复杂度:O(N+range),它适用于范围集中的整型数组 

计数排序代码:

void CountSort(int* a, int n)
{//先找出数组中的最大值和最小值以便开辟出不会浪费空间的计数数组int min = a[0], max = a[0];int i;for (i = 0; i < n; i++){if (max < a[i])max = a[i];if (min > a[i])min = a[i];}//通过最大值和最小值确定范围int range = max - min + 1;int* count = (int*)malloc(sizeof(int) * range);memset(count, 0, sizeof(int) * range);for (i = 0; i < n; i++){count[a[i]-min]++;}int j=0;//将改变后的数组传到原数组中for (i = 0; i < range; i++){while (count[i]--){//记得传数时传i+min(相对映射)a[j++] =i+min ;}}free(count);}

 基数排序(桶排序)

思想:分别取出每个数的个位,十位,百位······,每次依次通过个位。十位、百位···对其进行排序

简单过程如下图:

平时这个排序用处不大,在此就不展示它的代码了。

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

相关文章:

  • 【LeetCode】459. 重复的子字符串(KMP2.0)
  • CSS(五) -- 动效实现(立体盒子旋转-四方体+正六边)
  • Win10使用OpenSSL生成证书的详细步骤(NodeJS Https服务器源码)
  • sql_lab之sqli中的堆叠型注入(less-38)
  • 第5章-第3节-Java中对象的封装性以及局部变量、this、static
  • IP应用场景的规划
  • 27 redis 的 sentinel 集群
  • 计算机网络 网络安全技术
  • WebAssembly 的魅力:高效、安全、跨平台(下)
  • 二维码智慧门牌管理系统升级:确保公安机关数据安全无忧
  • Golang leetcode59 螺旋矩阵
  • 深度学习(Deep Learning) 简介
  • 服务器raid中磁盘损坏或下线造成阵列降级更换新硬盘重建方法
  • Ubuntu 常用命令之 exit 命令用法介绍
  • 依托亚马逊云科技构建韧性应用
  • Prometheus-JVM
  • flink sql1.18.0连接SASL_PLAINTEXT认证的kafka3.3.1
  • pytorch张量的创建
  • Web自动化测试工具的优势分析
  • 黑豹程序员-读properties属性文件本地正常,打包jar后运行出错
  • PyQt6 QTimer计时器控件
  • Vue:defineAsyncComponent(异步组件)、component(动态组件)、keep-alive(缓存组件)
  • 14 款最佳文件恢复软件 [2024 年最佳精选工具]
  • Redis基础篇-004 Redis的Java客户端
  • 【数据结构和算法】---栈和队列的互相实现
  • 机场信息集成系统系列介绍(6):机场协同决策支持系统ACDM
  • GO设计模式——17、解释器模式(行为型)
  • 基于SSM的大学生兼职平台的设计与实现
  • Ignite内存配置
  • 前端基础vue路由懒加载