排序算法之计数排序

计数排序是一种非基于比较的排序算法,它通过统计数组中每个元素出现的次数,将其按次数从小到大排序。

以下是计数排序的基本步骤:

  1. 统计:统计数组中每个元素出现的次数。
  2. 计数:将每个元素的出现次数存储在另一个数组中。
  3. 累加:从第二个元素开始,每个元素的值是其前一个元素的值加上1。
  4. 映射:将原始数组中的每个元素映射到累加数组中的相应位置。
  5. 复制:将映射后的元素复制回原始数组。

计数排序的时间复杂度为O(n+k),其中n是需要排序的元素数量,k是数组中的最大值与最小值的差值。这是因为计数排序需要遍历整个数组来统计元素出现的次数,然后还需要执行一次线性复制操作来将排序后的元素复制回原始数组。

以下是一个Python实现计数排序的例子:

def counting_sort(arr):  size = len(arr)  output = [0] * size  count = [0] * 10000  # 根据最大值和最小值的差值确定数组的大小  # 统计每个元素出现的次数  for i in range(size):  index = arr[i]  count[index] += 1  # 累加出现次数  for i in range(1, 10000):  count[i] += count[i - 1]  # 将元素放入输出数组中  i = size - 1  while i >= 0:  index = arr[i]  output[count[index] - 1] = index  count[index] -= 1  i -= 1  # 将输出数组复制回原数组  for i in range(size):  arr[i] = output[i]

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!

扫码进群领资料icon-default.png?t=N7T8https://s.pdb2.com/pages/20230519/16QijNiGb32IFIn.html

 

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

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

相关文章

redisson作为分布式锁的底层实现

1. redisson如何实现尝试获取锁的逻辑 如何实现在一段的时间内不断的尝试获取锁 其实就是搞了个while循环,不断的去尝试获取锁资源。但是因为latch的存在会在给定的时间内处于休眠状态。这个事件,监听的是解锁动作,如果解锁动作发生。会调用…

Android textview展示富文本内容

今天实现的内容,就是上图的效果,通过Span方式展示图片,需要支持文字颜色改变、加粗。支持style\"color:green; font-weight:bold;\"展示。尤其style标签中的font-size、font-weight是在原生中不被支持的。 所以我们今天需要使用自…

病情聊天机器人,利用Neo4j图数据库和Elasticsearch全文搜索引擎相结合

项目设计目的: 本项目旨在开发一个病情聊天机器人,利用Neo4j图数据库和Elasticsearch全文搜索引擎相结合,实现对病情相关数据的存储、查询和自动回答。通过与用户的交互,机器人可以根据用户提供的症状描述,给出初步的可…

字母简化(UPC练习)

题目描述 给出一串全部为小写英文字母的字符串,要求把这串字母简化。简化规则是:统计连续出现的字母数,输出时先输出个数,再输出字母。比如:aaabbbaa,则简化为3a3b2a;而zzzzeeeeea,…

机器学习一些概念

LDA:LDA最大化类间距离,最小化类内距离,使得投影后的不同类别的样本分的更开,属于监督学习。 PCA:PCA最小重构误差,使得投影后的值和原来的值尽量接近,属于非监督学习。 SVM:最大间…

帆软报表中定时调度中的最后一步如何增加新的处理方式

在定时调度中,到调度执行完之后,我们可能想做一些别的事情,当自带的处理方式不满足时,可以自定义自己的处理方式。 产品的处理方式一共有如下这些类型: 我们想在除了上面的处理方式之外增加自己的处理方式应该怎么做呢? 先看下效果: 涉及到两方面的改造,前端与后端。…

前端算法之二叉树

二叉树 二叉树用于解决什么问题 数据的组织与搜索:排序:表达式和计算:图形处理: 举例:二叉树的最近公共祖先 思路: 排序/排布方式 和 (排序中)当前树和节点的关系 举例2:…

光照贴图的参数化

正如Jon在上一篇文章中所解释的那样,我们在《见证者》中使用了预先计算的全局照明,而我的首要任务之一就是开发该系统。 我开发了一些有趣的技术来计算自动参数化,以一种可以轻松映射到 GPU 的方式制定照明计算,并通过使用辐照度…

【如何选择Mysql服务器的CPU核数及内存大小】

文章目录 🔊博主介绍🥤本文内容📢文章总结📥博主目标 🔊博主介绍 🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作…

Codeium在IDEA里的3个坑

转载自Codeium在IDEA里的3个坑:无法log in,downloading language server和中文乱码_downloading codeium language server...-CSDN博客文章浏览阅读1.7w次,点赞26次,收藏47次。Codeium安装IDEA插件的3个常见坑_downloading codeiu…

Nginx配置压缩和解压缩

压缩服务器响应,或为不支持压缩的客户端解压缩它们,以提高传递速度并减少服务器开销。 压缩响应通常会显著减小传输数据的大小。但是,由于压缩发生在运行时,因此它也会增加相当大的处理开销,从而对性能产生负面影响。…

4-2. AOP细节

1 AOP细节 1.1 切入点表达式 1.1.1 作用 通过表达式的方式定位一个或多个具体的连接点。 1.1.2 语法细节 1)切入点表达式的语法格式 execution([权限修饰符] [返回值类型] [简单类名/全类名] 方法名) 2) 举例说明 3)在AspectJ中,切入…

通过国家网络风险管理方法提供安全的网络环境

印度尼西亚通过讨论网络安全法草案启动了其战略举措。不过,政府和议会尚未就该法案的多项内容达成一致。另一方面,制定战略性、全面的网络安全方法的紧迫性从未像今天这样重要。 其政府官方网站遭受了多起网络攻击,引发了人们对国家网络安全…

小肥柴慢慢手写数据结构(C篇)(5-2 AVL树)

小肥柴慢慢学习数据结构笔记(C篇)(5-2 AVL树 目录5-5 AVL出现的原因5-5-1 平衡树5-5-2 平衡二叉树的具体案例 5-6 AVL平衡策略的讨论5-7 不使用平衡因子的实现(黑皮书,训练思维)5-8 使用平衡因子的实现&…

C++ 编程必备:对象生命周期管理的最佳实践

在C中,对象的生命周期是指对象存在的时间段,从对象创建到对象销毁的整个过程。正确地管理对象的生命周期是编写高效、可靠C代码的关键之一 对象的创建 在C中,对象可以通过三种方式创建:静态分配、自动分配和动态分配。 静态分配…

普中STM32-PZ6806L开发板(USART2 串口 + HI-LINK-V20离线语音模块控制LED灯)

简介 买了HI-LINK-V20型号的离线语音识别模块, 为了后面可以做有意思的东西, 现在先来用用, 使用USART2 串口 接收来自我在HI-LINK-V20中预设的动作, 当识别到词条时发送对应的指令到串口, HI-LINK串口接的就是STM32F03ZET6的USART2, 且往下看。 电路原理图 连线图 连线引脚表…

Linux:/proc/sys/vm/目录各文件详解

目录 前言一、/proc/sys/vm/目录各文件二、相关功能的API函数 前言 /proc/sys/vm/ 目录是 Linux 系统中的一个特殊目录,它包含了与虚拟内存子系统相关的系统内核参数。这些参数可以用来配置系统的虚拟内存管理策略,包括内存分配、页面置换、内存压缩、NU…

C读取文件大小的几种方式

一 标准库 fseek 至尾部 读取ftell返回 #include <stdio.h>int main(int argc, char** argv) {char* filenameargv[1];FILE* fp fopen(filename, "r");long int size ;fseek(fp, 0, SEEK_END);size ftell(fp);printf("%s size is %ld\n",filename…

数据库和数据库编程

数据库、数据表、表数据操作以及数据库编程相关的知识点 1. 数据库的概念&#xff1a; 数据库是用于存储和组织数据的系统。数据库管理系统(DBMS)是管理数据库的软件&#xff0c;提供对数据的访问、查询和维护。关系型数据库是一种通过表格结构来组织和管理数据的数据库。 2…

数据结构【线性表篇】(四)

数据结构【线性表篇】(四&#xff09; 文章目录 数据结构【线性表篇】(四&#xff09;前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f; 目录一、栈(一)、栈的顺序存储(二)、栈的链式存储(三)、共享栈 二、队列(一)、队列的顺序存储(二)、队列的…