码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 8-9基数排序


    基于链表的基数排序
    一.过程
    在这里插入图片描述
    将每个元素拆为个位、十位、百位,每一位的取值可能是0-9

    建立十个队列。先处理个位(按最低位优先LSD),520的个位是0,放入Q0,211的个位是1,放入Q1
    在这里插入图片描述
    即
    在这里插入图片描述
    同一个位的元素按照队列的规则从队尾进入
    在这里插入图片描述以此类推
    在这里插入图片描述
    按出队顺序,按递减次序排序,因此从Q9到Q0搜集元素
    得到438→888→168→007→666→996…
    至此完成了个位由大到小的排列

    同样,按照十位放入队列。十位为3的放到Q3,以此类推
    在这里插入图片描述
    在这里插入图片描述

    再按照出队顺序,从Q9到Q0搜集元素
    在这里插入图片描述
    再按百位元素放入队列,收集
    在这里插入图片描述
    即
    在这里插入图片描述
    至此完成了排序
    可以看出
    1.百位的权重>十位的权重>个位的权重,每次都先处理权重最低的次序。
    2.对于n个待排序元素,每个关键字可以拆分成d元组(百位十位个位就是三元组),其中百位叫做最高位关键字(最主位关键字),个位叫做最低位关键字(最低次关键字)
    3.每一位的可能取值为0~9,即r=10,0~r-1,r称为基数

    二.效率分析
    1.空间复杂度,需要r个辅助队列,O( r)
    2.时间复杂度:被拆成3个部分,进行3趟的分配和收集。对于拆成d个部分,需要进行d趟分配和收集。每一趟的分配需扫描所有元素O(n),每一趟收集需要O( r) (对每个队列的收集只需要O(1))。因此总的时间复杂度为O(d(n+r))
    d趟分配和收集(个十百三位)
    n个元素
    每个部分r个可能取值(0-9)
    3.稳定性
    按照队列先进先出的原则,该算法是稳定的
    在这里插入图片描述
    三.基数排序的应用
    对10000名学生的信息按年龄递减排序
    生日可拆分为三组关键字:年(1991-2005)、月(1-12)、日(1-31)
    显然,权重年>月>日
    其中,年月日越小,年龄越大,所以每次收集都是从左至右
    在这里插入图片描述
    在以下几种情况下可以优先选择基数排序
    数据元素的关键字可以方便的拆分为d组(个十百),d较小,关键字的取值范围r较小,数据元素个数n较大

    四.总结
    在这里插入图片描述

  • 相关阅读:
    Unity中使用代码动态修改URP管线下的标准材质是否透明
    CentOS8安装Geant4笔记(一):Geant4介绍、编译和安装
    字节跟踪偷拍前员工到快手上班,告他违反竞业协议,前员工被判赔偿字节30万!...
    redis解决缓存与数据库双写一致性问题代码实现
    Java#30(扩展知识:可变参数与Collections)
    TypeScript 中 any、unknown、never 和 void
    48.集群节点维护—滚动升级-1
    Java - LambdaQueryWrapper 的常用方法
    这是一个隐藏的(绝世武功)Java 学习路线图,祝你Offer拿到手软
    前端学习 node 快速入门 系列 —— 事件循环
  • 原文地址:https://blog.csdn.net/weixin_45825865/article/details/126105783
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号