桶排序,基数排序,计数排序的区别

本文详细介绍了桶排序和计数排序这两种时间复杂度为O(n)的排序算法,适用于小范围内大量重复数据的排序场景。通过实例解析了基数排序的概念及其实现过程,并对比了桶排序和计数排序在空间需求上的区别。

桶排序是在数组元素在某个小范围内大量数据情况下时间复杂度为O(n)的排序。
假如数据的范围为0~1000我们就开一个1001大小的数组进行排序,就是假如100出现了就将100的桶b[100]++;

以十进制为例,基数指的是数的位,如个位,十位,百位等
基数排序就是多个桶进行桶排序,比如输入的数最多有两位,我们就先按十位进行桶排序,分为0~9的十个桶,b[0]存0 ~9的数,b[3]存30 ~39的数,然后对每个0-9的桶进行按个位数的桶排序,最后就是整体有序的数组。

计数排序其实就是特殊的桶排序,就是多了一个先找最大最小值开一个大小为max-min+1的数组进行桶排序,假如i(min<=i<=max)出现了,就放进桶b[i-min]++。
比桶排序所需的空间有所减少

它们都是时间复杂度为O(n)的排序,都比较适合在某个小范围内大量重复数据的排序,而且都不需要进行记录关键字间的比较。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值