设排序数组的个数为n,数组中最大元素的位数为d。
时间复杂度:0(d×2n),2n代表的是一趟分配需要O(n),一趟收集需要O(n),这样的循环一共需要d次。
空间复杂度:O(n)
稳定性:稳定
算法原理:它是这样实现的:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。
基数排序的方式可以采用最低位优先LSD(Least sgnificant digital)法或最高位优先MSD(Most sgnificant digital)法,LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。LSD的基数排序适用于位数小的数列,如果位数多的话,使用MSD的效率会比较好,MSD的方式恰与LSD相反,是由高位数为基底开始进行分配,其他则都相同。
图示:
代码:
public static void radix_sort(int array[]){
int digitcount=10;//0-9共有10