基于Python3的数据结构与算法 - 11 基数排序

一、引入

多关键字排序:假如现在有一个员工表。要求按照薪资排序,薪资相同的员工按照年龄排序

  • 先按照年龄进行排序,再按照薪资进行稳定的排序

按照这种思路我们对[32,13,94,52,17,54,93]排序:

  • 先比较十位数的数字大小;(如果十位一样)再比较个位数的数字大小。
  1. 个位数字的范围为0~9,因此可以分成10个桶,将每个数字根据个位数字放入对应的桶中,再对桶中的数字根据十位数排序。(相当于先排个位数)
  2. 再将数字取出来,根据十位数字分桶,最后再依次取出,即排好序。(先进先出)

二、代码演示

代码演示如下:

def radix_sort(li):max_num = max(li)    # 最大值为99--2次分桶;最大值为10000--5次分桶it = 0   # it指迭代多少次  即9的it为0,99为1,999为2while 10 ** it <= max_num:buckets = [[] for _ in range(10)]   #创建10个桶for var in li:  # 遍历列表中的数字# 例如当前有个数字987:当it = 0,取出7;当it = 1,987//10->98 98%10 = 8; 当it = 2,987//100->9  9%10 = 9digit = (var // 10 ** it) % 10   # 代表将此时it指代的那一位数字取出来buckets[digit].append(var)   # 在对应的桶中添加元素# 再将元素依次从桶中取出来li.clear()for buc in buckets:li.extend(buc)   # 再将元素依次写入liit += 1import random
li = list(range(1000))
random.shuffle(li)
radix_sort(li)
print(li)

三、时间复杂度

  • 时间复杂度:O(kn)
  • 空间复杂度:O(k+n)
  • k表示数字位数

注意点:常见的字符串排序:例如abcd和ab;我们需要自动补零abcd和ac00;数字比较大小是首位补零;例如123和012

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/730768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS-04-javaScript数据类型和变量

一、数据类型 计算机能处理的远不止数值&#xff0c;还可以处理文本、图形、音频、视频、网页等各种各样的数据&#xff0c;不同的数据&#xff0c;需要定义不同的数据类型。在JavaScript中定义了以下几种数据类型&#xff1a; 1-1、Number JavaScript不区分整数和浮点数&…

c++ set集合按位置(索引)查询元素的方法

在STL中集合好处是可以对输入的元素进行排序&#xff0c;就是说在某些情况下对某些需要有序的元素可以使用set集合存储。不过在set集合没有提供按值查询的方法。 在集合中&#xff0c;set集合不允许出现重复元素&#xff0c;使用multiset集合可以存储重复元素。 按位置查询 按…

RK平台内核解压方式

64 位平台 64 位平台的机器通常烧写Image&#xff0c;由U-Boot 加载到目标运行地址。但是 RK平台的 U-Boot 还可支持 对64位 LZ4格式的压缩内核进行解压。但是用户必须使能&#xff1a; CONFIG_LZ4y64位LZ4压缩内核的解压前、后地址必须定义在各平台的 rkxxx_common.h 文件中…

【C++】每日一题 128 最长连续序列

给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 #include <iostream> #include <vector> #include <unordered_set&g…

预训练模型的使用torchvision.model和timm

pytorch 自带的torchvision.models 加载已经下好的模型 如果您想在导入 ResNet-50 模型时指定 pretrainedFalse&#xff0c;表示不加载预训练权重&#xff0c;您可以按照以下方式进行&#xff1a; import torch import torchvision.models as models# 创建 ResNet-50 模型实…

目标检测——高压线绝缘子数据集

一、简介 绝缘子是电力系统中至关重要的部件,它承担着保障电力安全、可靠传输的重要任务。绝缘子的性能直接影响到高压输电线路的运行状态。绝缘子长期暴露在恶劣的自然环境中,如强风、雷电、高温、低温、盐雾等,这些环境因素都可能对绝缘子的性能产生不良影响,导致其出现…

西门子PLC的交互界面怎样设计?

西门子PLC的交互界面设计集中于提供一个直观、多功能且用户友好的环境&#xff0c;旨在使工程师和技术人员能够有效地进行编程、监控和维护。下面是一些设计西门子PLC交互界面时的关键考虑因素&#xff1a; 1. **图形化编程环境**&#xff1a;设计时&#xff0c;重点在于提供直…

关于Vivado的实施过程、SDC和XDC约束支持、Vivado实施子流程、Tcl API支持脚本

关于Vivado的实施过程 AMD Vivado™设计套件可实现以下AMD设备体系结构&#xff1a;AMD Versal™自适应计算加速平台&#xff08;自适应SoC&#xff09;&#xff0c;AMDUltraScale™、AMD UltraScale™和AMD 7系列FPGA。各种设计来源如下支持&#xff0c;包括&#xff1a; •…

【视频图像取证篇】模糊图片复原车牌号技术原理和实战应用小结

【视频图像取证篇】模糊图片复原车牌号技术原理和实战应用小结 模糊图片复原车牌号常用的技术原理和实战应用—【蘇小沐】 &#xff08;一&#xff09;运动模糊视频图像 由于各种各样的原因&#xff0c;主体或者拍摄设备运动共同造成的视频图像模糊等。 1、快门速度 快门速…

Vue事件处理:.passive修饰符与应用场景

.passive修饰符 passive这个修饰符会执行默认方法。你们可能会问&#xff0c;明明默认执行为什么会设置这样一个修饰符。这就要说一下这个修饰符的本意了。 浏览器只有等内核线程执行到事件监听器对应的JavaScript代码时&#xff0c;才能知道内部是否会调用preventDefa…

接口自动化测试用例的编写方法

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式…

2007-2022年上市公司迪博内部控制评价缺陷数量数据

2007-2022年上市公司迪博内部控制评价缺陷数量数据 1、时间&#xff1a;2007-2022年 2、范围&#xff1a;上市公司 3、指标&#xff1a;证券代码、证券简称、辖区、证监会行业、申万行业、是否存在财报内控重大缺陷、财报内控重大缺陷数量、是否存在财报内控重要缺陷、财报内…

植物病害识别:YOLO甘蔗叶片病害识别分类数据集

YOLO甘蔗叶片病害识别数据集, 包含尾孢菌叶斑病&#xff0c;眼斑病&#xff0c;健康&#xff0c;红腐病&#xff0c;锈病&#xff0c;黄叶病6个常见病类别&#xff0c;3300多张图像&#xff0c;yolo标注完整&#xff0c;全部原始图像&#xff0c;未应用增强。 适用于CV项目&…

【Web - 框架 - Vue】随笔 - Vue的简单使用(01) - 快速上手

【Web - 框架 - Vue】随笔 - Vue的简单使用(01) - 快速上手 Vue模板代码 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>模板</title> </head> <body> <div></di…

内容检索(2024.03.08)

随着创作数量的增加&#xff0c;博客文章所涉及的内容越来越庞杂&#xff0c;为了更为方便地阅读&#xff0c;后续更新发布的文章将陆续在此汇总并附上原文链接&#xff0c;感兴趣的小伙伴们可持续关注文章发布动态&#xff01; 本期更新内容&#xff1a; 1. 电源完整性理论与…

easyExcel多sheet导入表格

PostMapping("/importExcelOther")ApiOperationSupport(order 9)ApiOperation(value "导入excel数据", notes "传入excel文件")public R importExcelOther(RequestParam("file") MultipartFile file) {if (file.getSize()0){throw …

CMake笔记

CMake笔记 文章目录 CMake笔记1 工程项目一般形式2 常见命令2.1 project2.2 set2.3 message2.4 add_executable()2.5 语法原则2.6 add_subdirectory2.7 add_library2.8 list 3 安装3.1 安装.h文件/文本文件3.2 安装工程脚本3.3 安装目录/目录下内容3.4 安装库文件3.5安装过程 4…

cocos creator 3.7.2使用shader实现图片扫光特效

简介 功能&#xff1a;图片实现扫光效果 引擎&#xff1a;cocos Creator 3.7.2 开发语言&#xff1a;ts 完整版链接 链接https://lengmo714.top/284d90f4.html 效果图 shader代码 // Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd. CCEffect %{techniques:- pas…

CorelDRAW Graphics Suite2024免费试用体验15天版下载

使用基于全球知名的 Corel Painter 画笔技术构建的 100 款逼真像素画笔&#xff0c;以全新的方式将您独特的想法变为现实&#xff01;试用 CorelDRAW 的全新美术画笔&#xff0c;探索您的创意想法。 使用 CorelDRAW 中现在可用的远程字体&#xff0c;畅享更多创作自由&#xf…

【linux驱动开发】IO模型之同步IO、异步IO、IO多路复用

文章目录 IO的概述IO模型的实现阻塞IO非阻塞IOIO多路复用信号驱动异步IO 编译与测试说明 IO的概述 io&#xff0c;英文名称为inoput与output&#xff0c;表示输入与输出。 在冯诺依曼结构计算机中&#xff0c;计算机由 运算器、控制器、存储器、输入、输出五部分组成&#xf…