c语言基数排序/桶排序

如果要排序的数字都是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之间的整数。

猜你喜欢

转载自blog.csdn.net/qq_40741513/article/details/84101701