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

24-数据结构-内部排序-基数排序

基数排序

        基数排序,给关键字分成d位(组),,对每一位的情况,可能会出现的值位r(基数)个,然后分成r个队列,对每个对林进行分配耗时O(n),最后按照改位(组)情况,进行收集耗时O(r)

所以基数排序的

时间复杂度:O(d*(r+n))。

空间复杂度:O(r),创建r个队列。-口令:饿(额外空间)鬼(归并排序),炸鸡(基数排序)块

稳定性:稳定,一直按照关键字,有序排列的,相同关键字入队,相对位置不会变

适用情况:

1.每组关键字方便拆成d位(组),且d比较小。

2.每组关键字取值不大,r较小。

3.元素个数较大时,d比较大。

2.思路:

        有点乱,简单来说,以整数为例子,有一个线性表,每个结点存储的数据都为三位数(关键字)。

  1. 三位数按照位数分为:个位、十位、百位(d=3),
  2. 先进行个位的情况,个位可能出现的数字为0-9,十个数字,因此r=10.
  3. 准备10个队列,每一个队列存储一个数字出现的可能性。按照个位,进行入队。这为分配
  4. 如果要求递减序列,则给个位按照递减,依次给队列从大队列到小队列,链接起来,最后收集成一个新的线性表,这叫收集
  5. 随后再根据十位的情况,重复类似的操作,最后进行完即可,
  6. 如图:

分配:

收集:

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

相关文章:

  • oracle11g安装图解
  • CBitmap、CreateCompatibleBitmap、CreateBitmap
  • 亲测好用教师小程序
  • 第十五章:输入输出流I/O
  • docker命令实例(举例子学习)
  • excel常用函数
  • 使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
  • Git快速安装【附安装包资源】
  • 算法进修Day-33
  • 开发工具分享 - Mybatis SQL日志格式化H5
  • 好用的办公软件有哪些
  • C#中Abstract、Virtual和Override的使用方法
  • mac电脑安装雷蛇管理软件,实现调整鼠标dpi,移动速度,灯光等
  • Oracle 19c OCM讲义课程:应用SQL执行计划基线的案例
  • 什么是 EDI 857?
  • OJ项目【登录】——验证码、失败登录多次账户冻结、用户密码加密,我是如何实现的?
  • js鼠标点击添加图标并获取图标的坐标值
  • How to add a jar to a project in eclipse?
  • 动手实现H5仿原生app前进后退切换效果
  • 【标准化封装 SOT系列 】 D SOT-323 SOT-363
  • 软件测试肖sir__python之ui自动化实战和讲解03
  • Kafka序列化反序列化解析、kafka schema
  • 谷歌浏览器中如何审查隐藏的元素
  • 【vue】使用less报错:显示this.getOptions is not a function
  • 代码随想录第48天 | ● 739. 每日温度 ● 496.下一个更大元素 I
  • 团购页面.
  • linux-系统日志/var/log/简介
  • 2022最新版-李宏毅机器学习深度学习课程-P26RNN-2
  • docker 配置mongoDB
  • 基于PHP的宠物爱好者交流平台管理系统设计与实现(源码+lw+部署文档+讲解等)