备战蓝桥杯Day22 - 计数排序

计数排序问题描述

对列表进行排序,已知列表中的数范围都在0-100之间。设计时间复杂度为O(n)的算法。

比如列表中有一串数字,2 5 3 1 6 3 2 1 ,需要将他们按照从小到大的次序排列,得到1 1 2 2 3 3 5 6 的结果。那么此时计数排序是比较好的选择。数据量不大且该算法的时间复杂度低。

算法思路:

  1. 统计频次: 扫描待排序数据,统计每个元素出现的次数,建立一个计数数组。计数数组的长度应该涵盖待排序数据的范围。

  2. 累加频次: 对计数数组进行累加操作,得到的结果表示小于等于每个元素的值的元素个数。这一步是为了确保排序的稳定性。

  3. 排序: 创建一个临时数组,遍历待排序数据,根据计数数组中的累加值,将元素放置到临时数组的合适位置。同时,更新计数数组中对应元素的值。

  4. 输出结果: 将临时数组中的排序结果返回,即为最终有序序列。

代码实现:

def count_sort(li,max_count= 100):   count = [0 for _ in range(max_count+1)]   # 生成一个计数器列表for val in li:count[val] += 1   # 遍历列表,得到每个数出现的次数li.clear()  # 将原来列表清空,往里添加排好序的数for ind, val in enumerate(count):  for i in range(val):        li.append(ind)  # 按照计的次数向里添加数字# 测试案例
li = [2, 5, 3, 1, 6, 3, 2, 1]
count_sort(li)
print(li)

运行结果

 这样在处理一些问题时可以直接用这个排序方法,不需要再去构思和设计算法了,在题目运用中还是有很大帮助的。

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

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

相关文章

一:面试流程

面试 项目介绍功能测试接口测试性能测试测试用例 项目介绍 南网智搜是南方电网公司研发的搜索引擎,主要场景Web 端场景有搜索频道、个人中心、和一些积分活动等,我在里面主要负责功能测试,接口测试,性能测试,压力测试…

Jetson Xavier NX 开发板Ubuntu18.04 安装arduino IDE详细步骤

Jetson 平台是arch架构,官网上面几乎都是x86或者arm64的这两种错误版本都存在匹配问题无法使用,不要下载不要下载! uname -a #版本查询1.正确下载打开方式 https://downloads.arduino.cc/arduino-1.8.19-linuxaarch64.tar.xz选择自己想要下…

LeetCode #104 二叉树的最大深度

104. 二叉树的最大深度 题目 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3 示例 2: 输入:root [1,null,2] 输出:2 分析 …

【Godot4自学手册】第十九节敌人的血量显示及掉血特效

这一节,我主要学习敌人的血量显示、掉血显示和死亡效果。敌人的血量显示和主人公的血量显示有所不同,主要是在敌人头顶有个红色的血条,受到攻击敌人的血条会减少,并且有掉血数量的文字显示,效果如下: 一、…

《中华人民共和国消防法》(2021年修订版)解读

单选题(共7题,每题5分) 1、举办大型群众性活动,承办人应当依法向()申请安全许可。 正确答案:B、公安机关 2、违反消防安全规定进入生产、储存易燃易爆危险品场所的,情节严重的要处…

基于springboot+vue的医院后台管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

胎神游戏集第一期

目录 一、变色小跳龙 二、超级按钮 三、超级迷宫 四 、城市守卫战 五、 愤怒的小胎 既然是胎神游戏集,那当然要先感谢我们的胎神大大了 胎神洛谷名:TSzza 好了,言归正传,知道你们不喜欢啰嗦,直接上代码 一、…

SMBGhost漏洞技术分析与防御方案

事件分析 最近国内外各安全厂商都发布了SMBGhost(CVE-2020-0796)漏洞的预警报告和分析报告,笔者利用周末休息时间也研究了一下,就算是做一个笔记了,分享给大家一起学习下,目前外面研究的POC大部分是通过SMB压缩数据包长度整数溢出…

【openGL4.x手册04】基元

一、说明 OpenGL 中的术语“基元”用于指代两个相似但独立的概念。 “原语”的第一个含义是指 OpenGL 使用的解释方案来确定渲染时顶点流所代表的内容,例如“GL_POINTS”。这样的顶点序列可以是任意长的。 “原语”的另一个含义,也称为“基本原语”&…

如何根据玩家数量和游戏需求选择最合适的服务器配置?

根据玩家数量和游戏需求选择最合适的服务器配置,首先需要考虑游戏的类型、玩家数量、预计的在线时间以及对内存和CPU性能的需求综合考虑。对于大型多人在线游戏,如MMORPG或MOBA等,由于需要更多的CPU核心数来支持更复杂的游戏逻辑和处理大量数…

操作系统|概述|系统分类——笔记

1.1_1操作系统的概念和功能 操作系统的概念 操作系统(Operating System, OS) 是指控制和管理整个计算机系统的 硬件和软件 资源,并合理地组织调度计算机和工作和资源的分配; 1操作系统是系统资源的管理者 以提供给用…

springboot拦截器和过滤器

过滤器 Filter依赖于servlet容器,属于servlet规范的一部分 Filter的生命周期由servlet容器管理 Filter可拦截所有web资源(包括jsp,Servlet,静态资源,Controller) 自定义Filter import javax.servlet.*; WebFilter(urlPatterns …

文件的顺序读写函数举例介绍

目录 例1:(使用字符输出函数fputc)例2:(使用字符输入函数fgetc)例3:(使用文本行输出函数fputs )例4:(使用文本行输入函数fgets )例5&a…

Docker基础教程 - 2 Docker安装

更好的阅读体验:点这里 ( www.doubibiji.com ) 2 Docker安装 Docker 的官网地址:https://www.docker.com/,在官网可以找到 Docker Engine 的安装步骤。 下面进行 Docker 环境的安装,正常情况下 Docker …

服务发现:CP or AP?

1 服务发现的意义 为高可用,生产环境中服务提供方都以集群对外提供服务,集群里这些IP随时可能变化,也需要用一本“通信录”及时获取对应服务节点,这获取过程即“服务发现”。 对服务调用方和服务提供方,其契约就是接…

(3)(3.1) FlightDeck FrSky发射器应用程序

文章目录 前言 1 概述 2 Turnkey Packages 3 参数说明 前言 ​Craft and Theory 的 FlightDeck 可让你轻松查看飞行模式、高度、速度、姿态和关键系统警报,包括故障保护和电池错误,如电池不平衡警告和发射机低电量警报。 1 概述 Craft and Theory 的…

【自然语言处理】NLP入门(二):1、正则表达式与Python中的实现(2):字符串格式化输出(%、format()、f-string)

文章目录 一、前言二、正则表达式与Python中的实现1.字符串构造2. 字符串截取3. 字符串格式化输出3.1 %符号格式化字符串1. 一般形式2. 常用格式字符3. 最小宽度和精度4. 进位制和科学计数法5. 多个对象的格式化输出6. 典例 3.2 format()方法格式化字符串1. 一般形式2. 参数传递…

51单片机-(中断系统)

51单片机-(中断系统) 了解51单片机中断系统、中断源、中断响应条件和优先级等,通过外部中断0实现按键控制LED亮灭为例理解中断工作原理和编程实现过程。 1.中断系统结构 89C51/52的中断系统有5个中断源 ,2个优先级,…

WiFi模块引领智能家居革命:连接未来的生活

随着科技的快速发展,智能家居正成为现代生活的一部分,极大地改变了我们与家庭环境互动的方式。其中,WiFi模块作为关键的连接技术,在推动智能家居革命中发挥着不可忽视的作用。本文将深入探讨WiFi模块如何驱动智能家居革命。 设备互…

1027 打印沙漏

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到…