如果要排序的数字都是k位组成的十进制数,如3位的489,就可以采用基数排序,也称为桶排序
排序步骤:
对有效位为k的十进制数,可以把每个数字看成一个分量,如有效位为3的379的分量为3 7 9,设置十个桶,编号为0 1 2 3.....9
1:将要排序的n个整数置于一个单向队列中
2:依次将队列中的每个数,按倒数第i的值x(如123倒数第一位的数字3开始,放入编号为3的桶中),放入编号为x的桶中
3:按桶的编号,从小到大,把每个桶中的数据,(按先进先出的顺序),依次重新置入单向队列中
4:重复2,3步骤,直到i=k为止,就可以得到非递减序列
数据组
123 343 354 902
桶
0 1 2 3 4 5 6 7 8 9
902 343 354 第一次入桶
123
902 343 123 354 第一次归并
902 123 343 354 第二次入桶
902 123 343 354 第二次归并
123 343 902 第三次入桶
354
123 343 354 902 第三次,排序结束
仅限于位数相同的排序
算法BUCKETSORT将n个元素排序所需的时间是O(k(m+n)),
其中k是每个元素的长度,每个分量是介于0到m-1之间的整数。