【数据结构】-基数排序

What:

基数排序是基于箱子排序,把数按照某种基数分解成数字,然后对数字进行排序,如将375按基数10分解为3、7、5,然后先按个位数进行排序,再按十位数、百位数。

Why:

针对箱子排序算法的Θ(n+range),如果要在0-n^4里面对10个数进行排序,则n=10,range=n^4,那么箱子排序的时间性能便为Θ(n^4)。如果对这10个数进行基数排序,设定基数x,则基数排序的执行步数也就是2*x+10,时间性能远远高于箱子排序。

How:

216-》521-》425-》116-》091-》515-》124-》034-》096-》024(输入链表)
521-》091-》124-》034-》024-》425-》515-》216-》116-》096(按个位数排序)
515-》216-》116-》521-》124-》024-》425-》034-》091-》096(再按十位数排序)
024-》034-》091-》096-》116-》124-》216-》425-》515-》521(再再按百位数排序)

(1)输入链表;

(2)选定基数r,进行分解,分解公式为:x%r ; (x/r)%r ; (x/r^2)%r ; (x/r^3)%r .......,这里选基数r=10;

(3)先用x%r分解出的数进行箱子排序;

(4)在(3)的基础上再用 (x/r)%r分解出的数进行箱子排序;

(5)在(4)的基础上用 (x/r^2)%r分解出的数进行箱子排序;

时间性能分析:

当使用基数r=n对0-n^c-1里面的n个数进行排序,每个数可以分解出c个数字,所以一共需要c次箱子排序;每次箱子排序range=n,即Θ(n) ;所以整个排序时间性能为Θ(n);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值