news 2026/9/3 3:04:24

记数排序(基数排序和桶排序)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
记数排序(基数排序和桶排序)
1、记数排序
概念

简述:将整个数组中的各个数据的个数数出来,然后讲这些数据重新填入原数组中

将要排序的数组先遍历一遍,选出最大的和最小的,以max-min+1(左闭右闭区间)为范围range

intmin=arr[0],max=arr[0];//这里很巧妙,以arr[0]作为min和max,可以解决排序负数的问题for(inti=0;i<n;i++){if(arr[i]>max)max=arr[i];if(arr[i]<min)min=arr[i];}

以range为数组大小开一个数组count,将数组中的数据全都初始化为0,

这里存在一个问题:我们难道要将0到max的值全部开出来吗

答:不是,我们采用“相对值”的方法(即将数据储存在相对于最小值的位置)

intrange=max-min+1;int*count=(int*)calloc(range,sizeof(int));//nullptr判断if(nullptr==count){perror("calloc fail");}

我们再将原数组中的数据中的每个数据的个数统计出来

for(inti=0;i<n;i++){count[arr[i]-min]++;}

然后将count中的数依次填入原数组

intj=0;for(inti=0;i<range;i++){while(count[i]-->0){arr[j++]=i+min;}}
实现:
voidCountSort(int*arr,intn){intmin=arr[0],max=arr[0];//这里很巧妙,以arr[0]作为min和max,可以解决排序负数的问题for(inti=0;i<n;i++){if(arr[i]>max)max=arr[i];if(arr[i]<min)min=arr[i];}intrange=max-min+1;int*count=(int*)calloc(range,sizeof(int));if(nullptr==count){perror("calloc fail");return;}for(inti=0;i<n;i++){count[arr[i]-min]++;}intj=0;for(inti=0;i<range;i++){while(count[i]-->0){arr[j++]=i+min;}}}
分析:

时间复杂度:O(N+range)

空间复杂度:O(range)

这使得记数排序适合排序数的大小范围较集中的数据

(当然,数据量足够大的时候这个方面的影响会减弱)

2、基数排序

太废了,不做进一步了解

3、桶排序

太废了,不做进一步了解
在这里插入图片描述

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 0:24:52

PaddlePaddle镜像如何部署到华为云昇腾环境?

PaddlePaddle镜像如何部署到华为云昇腾环境&#xff1f; 在国产化替代浪潮席卷各行各业的今天&#xff0c;越来越多企业开始关注“AI全栈自主可控”的落地路径。尤其是在金融、政务、能源等对安全性要求极高的领域&#xff0c;单纯依赖国外深度学习框架与GPU硬件的技术路线已难…

作者头像 李华
网站建设 2026/9/2 23:31:15

Step-GUI 技术报告解读

模型训练、标准化接口、真实场景评估 1、数据生成&#xff1a;如何高效、低成本地获取可靠训练数据 2、部署协议&#xff1a;如何安全、标准地部署成为新问题&#xff1b;敏感数据&#xff08;如屏幕截图&#xff09;最好能留在本地设备处理。 3、场景评测&#xff1a;如何科学…

作者头像 李华
网站建设 2026/8/29 2:38:51

多种类型Agent 工具调用机制讲解

概述 工具调用是 Agent 与外部世界交互的核心机制。本教程将详细讲解整个工具调用的完整流程。一、什么是"工具"&#xff1f; 工具就是普通的 Python 函数&#xff0c;预先定义在 tools.py 中。 # tools/tools.pydef web_search(query: str, search_engine: str &qu…

作者头像 李华
网站建设 2026/9/3 0:20:27

3分钟让你的Windows桌面焕然一新:任务栏透明美化终极指南

3分钟让你的Windows桌面焕然一新&#xff1a;任务栏透明美化终极指南 【免费下载链接】TranslucentTB 项目地址: https://gitcode.com/gh_mirrors/tra/TranslucentTB 厌倦了千篇一律的Windows默认界面&#xff1f;想要一个既美观又实用的个性化桌面&#xff1f;今天就来…

作者头像 李华
网站建设 2026/9/2 23:32:09

Rust 编程语言教学目录

Rust 编程语言教学目录 第一部分&#xff1a;基础入门篇 (1-2周) 第1章&#xff1a;Rust 初体验 1.1 Rust 语言概述与设计哲学1.2 安装 Rust 工具链 rustup 安装与配置Cargo 包管理器介绍 1.3 第一个 Rust 程序 Hello World使用 Cargo 创建项目 1.4 开发环境配置 VS Code Rust…

作者头像 李华