基数排序 RadixSort 算法分析
来源:互联网 发布:安徽幻维网络是培训吗 编辑:程序博客网 时间:2024/06/06 06:57
前面已经介绍了几种排序:
分治排序: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))。
具体代码就不给了,这个有点简单。
- 基数排序 RadixSort 算法分析
- radixSort 基数排序算法实现
- 【排序算法】基数排序(RadixSort)
- 排序算法-基数排序(RadixSort)
- 基数排序(RadixSort)
- RadixSort (基数排序)
- RadixSort基数排序
- Java排序算法(八)--基数排序(RadixSort)
- 基数排序(radixSort)
- 基数排序 radixsort(LSD)
- 基数排序-RadixSort
- 基数排序 radixSort 实现
- 基数排序(radixSort)
- (算法设计技巧与分析)RadixSort
- [硕.Love Python] RadixSort(基数排序)
- 基数排序算法分析
- 算法基础复习-RadixSort
- 用queue实现的基数排序RadixSort
- c++ Builder中如何让程序只运行一个实例
- ubuntu安装netbeans方法及解决netbeans乱码方法
- LINUX下使用移动3G上网卡攻略
- scsi命令
- .NET 面试题总结 (附有参考答案) 第3部分
- 基数排序 RadixSort 算法分析
- JAVA读取xml文件
- VC++ Tab Control控件的使用
- eclipse subversion native library not available
- Windows环境进程间通信(一):共享文件方式
- 怕忘记了。记录一下要采购的元件----1
- MySQL存储过程-插入后返回ID
- POJ 2155 二维线段树 书套树
- 关于百度蛛蛛日志分析对SEO的作用