基数排序 RadixSort 算法分析

前面已经介绍了几种排序:

分治排序:http://blog.csdn.net/wolinxuebin/article/details/7380455

堆排序   :http://blog.csdn.net/wolinxuebin/article/details/7388858

快速排序:http://blog.csdn.net/wolinxuebin/article/details/7456330

随机快速排序:http://blog.csdn.net/wolinxuebin/article/details/7456595

 

下面介绍基数排序:

    为什么要基数排序,或者基数排序有什么好处?

    基数排序最大的特点就是稳定性,简单的说,如果有两个数都为11,姑且前面一个标为11(1),后者为11(2),最后排序之后,11(1)始终在11(2)前面,这个特点是基数排序的重要点。

    基数排序是从老式穿卡机(现在没有了,不解释了)上衍生出来的,主要思想如下图1:

图1 基数排序示意图

    有些细节要解释下,一、此处你看到的数字不在是完整的数字,而是由多个关键字组成的数字,所以是按照关键字排序,先顺如相应的“桶”空间,再顺序出来,此处的桶理解为队列,先进先出。

    二、为什么从“最小”位的关键字开始排,上面大家都已经看到了,如果不不相信,从第一位开始拍,看看最终结果完全相反。为什么呢?这里我理解为,第一位是最大关键字,第三位为最小关键字,优先级为第一位>第二位>第三位,由此可知就是说,优先级高的关键字可以打破优先级低的关键字已经排好的顺序。

    三、时间复杂度,设有n个d位数,每位数有k种(如0~6,有7种可能,k为7)可能,每个关键字时间复杂度为o(n+k),n很好理解,k呢?其实k就是在分配完后,将各自的桶组在一起,共有k中取值,k种桶。所以总的时间复杂度为o(d*(k+n))。

    具体代码就不给了,这个有点简单。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值