基數排序 次位優先 Python實現

2021-09-29 19:11:52 字數 960 閱讀 2843

先比較每個數字的低位,排好之後,再按更高位的數排序,以此類推

注意:高位沒有數字預設為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位放入...