- 原理
基数排序需要借助 0 1 2 3 4 5 6 7 8 9
先将个位上的数字依次从上到下放于对应的位置之上,然后按照从左到右,从上到下得到新序列
之后将十位上的数字依次从上到下放于对应的位置之上,然后按照从左到右,从上到下得到新序列
然后是百位,千位 …
不理解的可以看 🖱️视频讲解,或者结合下面的例子
- 复杂度
时间复杂度:平均和最坏情况下都是 O(d(n+rd)) ,其中,n 为序列中的关键字数; d 为关键字的关键字位数,如 930,由3位组成,d=3; ra 为关键字基的个数,这里的基指的是构成关键字的符号,如关键字为数值时,构成关键字的符号就是 0 ~ 9 这些数字,一共有十个,即 ra =10。
空间复杂度:O(rd)
【例1】现有 25 15 71 34 91 五个数字,进行升序排列
个位
1)0 1 2 3 4 5 6 7 8 9
71 34 25
91 15
得到:71 91 34 25 15
十位
2)0 1 2 3 4 5 6 7 8 9
15 25 34 71 91
得到:15 25 34 71 91
【例2】现有 505 008 109 930 063 五个数字,进行升序排列
个位
1)0 1 2 3 4 5 6 7 8 9
930 063 505 008 109
得到:930 063 505 008 109
十位
2)0 1 2 3 4 5 6 7 8 9
505 930 063
008
109
得到:505 008 109 930 063
百位
3)0 1 2 3 4 5 6 7 8 9
008 109 505 930
063
得到:008 063 109 505 930