先比較每個數字的低位,排好之後,再按更高位的數排序,以此類推
注意:高位沒有數字預設為0
1# 初始預設最大位數為1位
# 找到最大值,更新最大位數
max_num =
max(seq)
while max_num >
10**max_digit:
max_digit +=
1for i in
range
(max_digit)
:"""從低位(個位)開始,按0-9排一遍,更新一遍seq"""
bucket =
# 使用字典構建桶
for x in
range(10
):# 設定0-9十個空桶
bucket.setdefault(x,
)for x in seq:
radix =
(x//(10
**i))%
10# 得到每位的基數
bucket[radix]
# 放入對應桶中
j =0for k in
range(10
):if bucket[k]
:# 若桶不為空
for ele in bucket[k]
:# 將該桶中每個元素放回到陣列中
seq[j]
= ele
j+=1return seq
lsd( [64,8,512,27,729,0,1,343,125] )
res : [0, 1, 8, 27, 64, 125, 343, 512, 729]
基數排序 次位優先演算法
演算法描述 多關鍵字排序 又比如123,主位是1,次衛是3。123,46,791。按照次位優先 次位 791,123,46 次次位 123,46,791 次次次位 46,123,791 具體實現 建立桶元素結點,用鍊錶實現。建立桶頭尾結點結構體。構造getdigit int x,int d 函式 用...
排序演算法之基數排序 JavaScript實現
剛開始學,注釋為自己的理解,敬請指正。lsd radix sort 比較整型 var counter 定義乙個函式 arr待排序陣列 maxdigit陣列中最大數的位數,例如 1,10,100 的maxdigit為3 function radixsort arr,maxdigit 現在把這個 buc...
python 實現基數排序
由桶排序改進來的 從最低位到最高位依次桶排序 最後輸出最後排好的列表 def radixsort list,d for k in range d d輪排序 每一輪生成10個列表 s for i in range 10 因為每一位數字都是0 9,故建立10個桶 for i in list 按第k位放入...