基数排序讲解

基数排序,顾名思义就是找一个基数,然后搞起,一般情况我们都会以10为基数,基数排序也是桶排序的一种,接下来我们通过例子来详细讲解一下

有数组[10 1 18 30 23 12 7 5 18 233 144]

我们建立一个下标从0到9的桶,然后对数组进行遍历

首先我们遍历个位数,把个位数一样的数据放到对应下标的桶中,比如上面的10的个位数是0,所以放到第一个桶中,1的个位数是1,所以放到下标为1,也就是第二个桶中……18的个位数为8,放到第九个桶中……

这样一遍之后的结果结果是

通过上图我们清晰的看到,下标为  0,1,2,3,4,5,7,8  的都有对应若干个数

接下来进行第二遍排序,这个时候使用十分位进行排序,因为个位数的没有十分位,自然排在最前面,而且个位数在第一轮排序的时候已经跟下标进行对应,也就是说,十分位已经排序好了,只需要放到最前面就好了,经过第二轮排序之后结果如下

[1 5 7 10 12 18 18 23 30 233 144]

嗯,我们看到个位数和十位数已经排序完成,接下来我们进行第三轮排序,采用百分位,排序结果为下

[1 5 7 10 12 18 18 23 30 144 233]

至此排序完成,符合预期

实战部分:

java实现基数排序

python实现基数排序

go实现基数排序

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值