1. 程式人生 > >c語言基數排序/桶排序

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之間的整數。