news 2026/4/23 17:07:32

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

作者头像

张小明

前端开发工程师

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/4/16 17:42:59

软件里面被植入了挖矿程序,怎么处理?(内含详细步骤)

处理挖矿程序其实有章可循&#xff0c;我帮你把关键步骤和注意事项都整理好了&#xff0c;照着做就能有效控制风险。一、立即断网隔离 操作‌&#xff1a;在Windows中禁用网络适配器&#xff0c;Linux执行ifconfig eth0 down&#xff08;假设接口为eth0&#xff09;。 目的‌&a…

作者头像 李华
网站建设 2026/4/23 13:54:55

如何在Windows上快速部署Poppler:PDF处理终极解决方案

如何在Windows上快速部署Poppler&#xff1a;PDF处理终极解决方案 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows Poppler for Windows是一款专为W…

作者头像 李华
网站建设 2026/4/23 15:30:34

5分钟快速上手Poppler:Windows平台PDF处理终极指南

5分钟快速上手Poppler&#xff1a;Windows平台PDF处理终极指南 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为PDF文档的文本提取、格式转换…

作者头像 李华
网站建设 2026/4/22 21:49:47

域名型DV SSL证书

域名验证 (DV) SSL证书是通过证明您对特定域名的控制权&#xff0c;使用电子邮件或DNS记录等自动化检查&#xff0c;可以最快、最便宜地加密网站流量 (HTTPS)。它非常适合需要基本安全保障的博客/小型网站&#xff0c;但不会像OV/EV证书那样验证企业身份。它会https://在浏览器…

作者头像 李华
网站建设 2026/4/23 10:10:17

如何在 Azure 数据工厂中并行化复制活动

原文&#xff1a;towardsdatascience.com/how-to-parallelize-copy-activities-in-azure-data-factory-5d21df7b8562?sourcecollection_archive---------10-----------------------#2024-10-10 优化企业数据湖的数据传输 https://rebremer.medium.com/?sourcepost_page---by…

作者头像 李华
网站建设 2026/4/23 10:10:04

从零实现Vivado固化程序烧写所需的硬件搭建

手把手教你搭建可靠的FPGA固化烧写硬件平台&#xff1a;从电源到Flash的实战细节你有没有遇到过这样的情况&#xff1f;在Vivado里辛辛苦苦设计完逻辑&#xff0c;生成比特流&#xff0c;用JTAG下载一切正常——灯也亮了&#xff0c;信号也对了。可一旦拔掉电脑、重新上电&…

作者头像 李华