[排序算法]桶排序

news2024/12/26 11:12:45

参考:《漫画算法-小灰的算法之旅》

目录

一、什么是桶排序

二、桶排序的工作原理

三、代码

四、时间复杂度和空间复杂度


一、什么是桶排序

桶排序是一种线性时间的排序算法,它类似于基数排序所创建的统计数组。桶排序需要创建若干个桶来协助排序。

桶排序中的桶代表一个区间范围,里面可以承载一个或多个元素。

二、桶排序的工作原理

假设有一个非整数数列,如下: 4.5,0.84,3.25,2.18,0。

第一步:创建桶,并确定每一个桶的区间范围。

具体需要建立多少个桶,如何确定桶的区间范围,有很多种不同的方式。这里创建的桶数量等于原始数列的元素数量,除最后一个桶只包含一个数列的最大值外,前面各个桶的区间按照比例来确定:

区间跨度=(最大值-最小值)/(桶的数量-1)

第二步:便利原始数列,把元素对号入座放入各个桶中。

 第三步:对每个桶内的元素分别进行排序。

 第四步:遍历所有的桶,输出所有元素。

0.5,0.84,2.18,3.25,4.5

三、代码

四、时间复杂度和空间复杂度

假设原始数列有n个元素,分成n个桶。

下面逐步来分析一下算法复杂度。

第1步,求数列最大值、最小值,运算量为n。

第2步,创建空桶,运算量为n。

第3步,把原始数列的元素分配到各个桶中,运算量为n。

第4步,在每个桶内部做排序,在元素分布相对均匀的情况下,所有桶的运算量之和为n。

第5步,输出排序数列,运算量为n。

因此,桶排序的总体时间复杂度为O(n)。

至于空间复杂度就很容易得到了,同样是O(n)。

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

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

相关文章

企业数字化管理中,数据治理到底怎么“治”

随着信息化、数字化的理念、技术及其应用在社会的方方面面进行扩散,数据的规模和丰富程度已经达到了一个新的高度,所以当下如何更进一步利用好数据,充分发挥数据的价值,将其真正变为高质量的数据资产成为了企业要面对的重要问题&a…

Matlab高光谱遥感、数据处理与混合像元分解及典型案例

站在学员的角度去理解“高光谱”,用大家能听的懂的语言去讲述高光谱的基本概念和理论,帮助学员深入理解这项技术的底层科学机理。方法篇,将高光谱技术与MATLAB工具结合起来,采用MATLAB丰富的工具箱,快速复现高光谱数据…

爱快 Docker NodeRed Tcp服务器远程连接试验

有一台基于4415软路由安装的ubuntu server系统,在Ubuntu上通过Docker安装了NodeRed。ubuntu通过爱快硬路由与外网连接。爱快硬路由通过动态域名和端口映射实现远程访问ubuntu。 平时通过如下命令运行NodeRed镜像: docker run -it --rm -e TZ"Asia/…

掌握这些Revit常见术语,从此BIM建模再无压力

BIM模型看似复杂,其实只要掌握模型中基本元素的概念,理清建模原理,就能轻松上手,游刃有余。 首先,我们要清楚,作为BIM主要建模软件的Revit,可以在三维空间中建立起数字化的建筑信息模型&#xf…

【更新公告】AirtestIDE更新至1.2.15版本

1. 前言 本次更新为AirtestIDE、Airtest、Poco、iOS-tagent更新。 AirtestIDE更新至1.2.15版本,Airtest更新为1.2.10版本,Poco更新为1.0.89版本,iOS-tagent重新梳理了master分支内容。更新内容详见下文。 2. 更新内容 1)Airte…

HBase之全文检索Phoenix

HBase高手之路6-HBase之全文检索Phoenix 一、全文检索 ​ 二、全文检索工具phoenix简介 三、OLTP和OLAP 1. OLAP 在线分析处理系统,hadoop、hbase、hive提供支持 2. OLTP 在线事务处理系统,传统的关系数据库支持 四、Phoenix的安装 1. 下载 2.…

企业数字化转型的核心是什么?如何才能真正做到数字化转型?

什么是数字化转型?如何才能做到数字化转型? 好像大家一直在讨论,但仍然没有一个明确的答案。 这其实很正常: 因为“数字化”一词对不同的企业来说有不同含义。它可以是从采用新技术——引入自动化操作中的任何一样东西。此外,“…

《一次性分割一切》阅读笔记

目录 0 体验 1 摘要 2 十个问题 参考文献 0 体验 体验地址:SEEM - a Hugging Face Space by xdecoder 体验结果: 将哈士奇和汽车人从图片中分割出来。 1 摘要 尽管对于交互式人工智能系统的需求不断增长,但在视觉理解(例如…

HCIP之RSTP、MSTP

目录 RSTP 相较于802.1D改进 改进1:变更了端口角色 改进点2:修改了端口的状态类型 改进3:对配置BPDU的报文内容进行修改 改进点4:对配置BPDU的处理 改进点5:快速收敛机制 改进点6:拓扑变更机制的改进…

用户画像系列——HBase 在画像标签过期策略中的应用

一、背景 前面系列文章介绍了用户画像的概念、用户画像的标签加工、用户画像的应用。本篇文章主要介绍一些画像的技术细节,让大家更加详细的了解画像数据存储和处理的逻辑 举个现实中的例子: 例子1:因为疫情原因,上线一个平台(…

使用chatgpt探索XSS问题

首先问的问题是:XSS的类型有哪些?如何有效地预防? 回答的结果来看,还是比较中规中矩的。 紧接着,第二个问题:“XSS的三种类型的区别是什么?” 只是从形成原理上分析了不同,但是&…

服务器空间不足处理与解决思路—实战docker占用空间太大

前言 服务器Centos操作系统,空间不足的问题处理了三次了,决定把它的解决思路和处理过程记录下来。服务器空间不足是一个经常会遇到的问题,尤其是在大型应用程序和网站上。当服务器空间不足时,应该采取一些步骤来处理和解决这个问…

AWT_绘图_组件绘图原理

组件绘图原理: 之前我们已经学习过很多组件,例如Button、Frame、Checkbox等等,不同的组件,展现出来的图形都不一样,其实这些组件展示出来的图形,其本质就是用AWT的绘图来完成的。 在AWT中,真正提…

idea使用 ( 三 ) 常用配置

4.常用配置 4.1.Settings 配置 接 2.3.2.设置配置 也可以 从菜单选择 设置配置 File > Settings 打开配置窗口 其中 Appearance & Behavior : 外观 与 行为 Keymap : 快捷键 Editor : 编辑器 Plugins : 插件 Version Control : 版本控制 Build, Execution,…

数据库系统--并发控制

文章目录 一、为什么要并发控制1.2 并发控制解决的问题1.2.1 脏读1.2.2 幻读1.2.3 不可重复读1.2.4 数据丢失问题 二、事务调度及可串行性2.1 事务2.1.1 事务的宏观2.1.2 事务的微观2.1.3 事务的特性 ACID 2.2 事务调度与可串行性2.3 冲突可串行化判定 三、基于封锁的并发控制方…

【MySQL高级】——存储引擎

一、查看存储引擎 show engines;二、设置系统默认的存储引擎 <1> 查看默认的存储引擎 show variables like %storage_engine%; #或 SELECT default_storage_engine;<2> 修改默认的存储引擎 1. 命令方式 SET DEFAULT_STORAGE_ENGINEMyISAM;2. 配置文件方式 …

研读Rust圣经解析——Rust learn-13(并发)

研读Rust圣经解析——Rust learn-13&#xff08;并发&#xff09; 并发创建新线程使用 join 等待所有线程结束线程获取环境所有权通过消息传递传送数据创建通道发送|接收消息隐式调用recv 共享状态并发通过使用互斥器Mutex创建Mutex共享MutexArc<T>原子引用计数 使用 Syn…

top命令学习

文章目录 一、top命令回显信息含义1、第一行2、第二行3、第三行4、第四行5、第五行6、第六行进程信息 二、top简单交互1、按数字“1”&#xff0c;显示列出所有cpu的信息2、按“M”&#xff0c;按内存使用率从大到小排序3、按“P”&#xff0c;按CPU使用率从大到小排序 一、top…

深度学习基础知识-感知机+神经网络的学习

参考书籍&#xff1a;&#xff08;找不到资源可以后台私信我&#xff09; 《深度学习入门&#xff1a;基于Python的理论与实现 (斋藤康毅)》 《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition (Aurelien Geron [Gron, Aurlien])》 机器学习…

(转)mysql数据库安装指南

如果你的电脑是mac&#xff0c;参考社群会员 奔跑的土豆 的分享&#xff1a; https://http://zhuanlan.zhihu.com/p/37942063232 赞同 162 评论文章 如果你的电脑是windows&#xff0c;参考下面的安装步骤。 一、下载mysql数据库 进入MySQL官方网站&#xff08;MySQL Co…