内部排序算法之基数排序

桶式排序: 设置一个数组Count,大小为M,并初始化为零,于是Count有M个单元,开始时都是空的。当Ai被读入是Count[Ai]增加1,在所有的输入被读进纸盒,扫描数组Count,打印出排好序的表。该算法耗费O(M+N);

基数排序是桶式排序(bucket sort)的推广。基数排序就是多趟桶式排序;

算法步骤如下:

例子对0-999的一组数字排序:

  第一趟基数排序后的桶:         

0151234364125216278729
0123456789

 

 

第二趟基数排序后的桶

 

8

1

0

216

512

729

27

125

 343 64   
0123456789

 

 

 

 

最后一趟的基数排序为:

64

27

8

1

0

125216343 512 729  
0123456789

 

 

 

 

 

 

然后将每个桶里的数顺序输出即为正确数列;

为了正确结果,该算法唯一可能出错的可能就是如果两个数出自同一个桶但顺序是错误的,不过此时各趟排序保证当几个数进入同一个通的时候,他们是以排序的顺序进入,可以保证得到正确的结果。

该排序所用的时间是O(P(N+B)),P为排序趟数,B为桶数,N为元素个数;

 

转载于:https://www.cnblogs.com/HuaiNianCiSheng/archive/2013/05/24/3096319.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值