4.10 基数排序
Posted 极夜编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.10 基数排序相关的知识,希望对你有一定的参考价值。
4.10 基数排序
基数排序(Radix Sort)
基数排序和计数排序这两个算法名字很像,又都是线性时间的排序算法,很多程序员把两者给混淆了。
基数排序可以看作是桶排序的扩展,主要思想是将整数按位划分。
基数排序需要准备10个桶,分别代表0-9,根据整数个位数字的数值将元素放入对应的桶中,之后按照输入赋值到原序列中,再依次对十位、百位等进行同样的操作。
例如一个有9个数字组成的无序序列,进行升序排序。
算法分析
原本计数排序的时间复杂度是O(n+m),而基数排序总共执行了k次计数排序,所以时间复杂度是O(k(n+m)),其中k是整数的最大位数,m是桶的个数。
虽然基数排序的时间复杂度是O(k(n+m)),但由于最大位数k是一个固定常量,因此它仍然是一个线性时间的排序算法。
由于基数排序的辅助数组是反复重用的,所以空间复杂度是O(n+m),其中m是桶的个数。
【视频讲解】
以上是关于4.10 基数排序的主要内容,如果未能解决你的问题,请参考以下文章