如果要排序的數字都是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 第一次入桶
123902 343 123 354 第一次歸併
902 123 343 354 第二次入桶
902 123 343 354 第二次歸併
123 343 902 第三次入桶
354123 343 354 902 第三次,排序結束
僅限於位數相同的排序
演算法bucketsort將n個元素排序所需的時間是o(k(m+n)),
其中k是每個元素的長度,每個分量是介於0到m-1之間的整數。
基數排序(桶排序)
1。什麼是基數排序 radix sort 基數排序 屬於分配式排序 distribution sort 又稱 桶排序 bucket sort 它是通過鍵值的各個位的值,將要排序的元素分配至某些 桶 中,達到排序的作用。2.它和歸併一樣,屬於穩定型演算法。public void radixsort i...
基數排序(桶排序)
思想 先把這組資料的個位排有序,再把十位排有序,再排百位 千位 include include include include void showarr int arr,int len printf n int getmaxnumfin int arr,int len 找陣列中最大數,並求出最大數的...
基數排序 桶排序
1.基數排序又稱桶排序,具體思想就是將數值當成陣列的下標儲存。2.將所有數值拿出個位來比較,例如值為m的就存入下標為m的陣列中。3.將比較後的陣列拿出即為按個位排序好的陣列,再將這個排序好的陣列按十位排序。4.比較完個十百千所有位數以後即排序完成。兩種 實現思路都是一樣的,實現方式1可直接改寫為c或...