c语言基数排序/桶排序

如果要排序的数字都是k位组成的十进制数,如3位的489,就可以采用基数排序,也称为桶排序

排序步骤:

对有效位为k的十进制数,可以把每个数字看成一个分量,如有效位为3的379的分量为3  7  9,设置十个桶,编号为0 1 2 3.....9

1:将要排序的n个整数置于一个单向队列中

2:依次将队列中的每个数,按倒数第i的值x(如123倒数第一位的数字3开始,放入编号为3的桶中),放入编号为x的桶中

3:按桶的编号,从小到大,把每个桶中的数据,(按先进先出的顺序),依次重新置入单向队列中

4:重复2,3步骤,直到i=k为止,就可以得到非递减序列

数据组
123 343 354 902
桶
0    1    2    3    4    5    6    7    8    9
        902  343  354                            第一次入桶
             123
902 343 123 354                                  第一次归并

902      123        343  354                       第二次入桶
902 123 343 354                                   第二次归并
     123       343                           902    第三次入桶
               354
123  343  354  902                               第三次,排序结束

仅限于位数相同的排序

算法BUCKETSORT将n个元素排序所需的时间是O(k(m+n)),
其中k是每个元素的长度,每个分量是介于0到m-1之间的整数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值