基数排序
原理:将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串和特定 格式的浮点数,所以基数排序也不一定只能用于整数。当数据量很多,而数据值较小时具有效率优势。
Java代码如下:
运行结果:
效率: 在绝大多数的情况下,算法的执行效率为O(N*logN),和快速排序算法相同,与归并排序类似,基数排序 所需要的存储空间是快速排序的两倍
时间复杂度
循环次数,最大位数D,代码中的循环:五次循环,次数10或N,O(N)
复杂度O(DN)
稳定性
当两个数相等时,每次都入同一个桶,同一个桶内的先后顺序维持原本的先后顺序,稳定排序。
扩展:基数未必取10,r进制可以取r,则每一位有r个桶,复杂度O(Nlog®M),M是整个数组中最大的数值,log®M是在r 进制下最大的位数。