c語言基數排序/桶排序
阿新 • • 發佈:2018-11-15
如果要排序的數字都是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之間的整數。