python 基數排序詳解

2021-09-03 00:27:23 字數 1114 閱讀 2652

今天簡單的說下基數排序,基數排序比較特殊,他不用元素之間進行比較,也不用元素之間交換位置,你只需要堆元素進行分類就可以了,這個也恰巧就是基數排序的魅力。

基數排序思想:

基數排序是桶排序的一種擴充套件,將整數按位數分割成不同數字,然後按照每個位數分別比較

過程:1.分配:先從個位開始,根據位值(0-9)分別放到0-9號桶中,比如53 個位為3 ,我們就把53放入到3號桶中

2.收集:再將0-9號桶中的資料按順序放到陣列

3.重複(1)(2)過程

舉例說明:

[521,310,72,375,15,546,385,856,187,147]

首先建立桶,按桶分配,分析了下資料最大的是百位,所以我們建立3個桶,個位,十位,百位

然後開始分配

個位情況:

0 :310(因為個位是0)

1:521

2:72 372

3:4:

5:15 385

6:546   856

7:187   147

第一輪結束,開始收集(從0-9)按序收集

[310,521,72,372,15,385,546,856,187,147]

第二輪開始十位的比較

1:310   15

2:521

3:4:546    174

5:856

6:7:72    372

8:385  187

第二輪結束,開始收集:

[310,15,521,546,174,856,72,372,385,187]

第三輪開始,百位的比較:

0:15    72

1:147   187

2:3: 310    372    385

4:5:521

8:856

收集:[15,72,147,187,310,372,385,521,856]

排序完成

from random import randint

if __name__ == '__main__':

a = [randint(1, 999) for i in range(10)]

a = radixsort(a, 3)

print(a)

排序演算法 基數排序詳解

筆者今天學習字尾陣列,發現需要用到基數排序,所以趕緊學習一波。基數排序是基於關鍵字排序,先比較第乙個關鍵字,再比較第二個關鍵字。舉個栗子 假如我們有一堆數,17,8,25,78,123,512,250 實際操作時,是將依次將個位 十位 百位的相同的數放入同乙個桶中,高位不足補零。然後再從桶中收集元素...

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位放入...

python之基數排序

基數排序 將整數按位數切割成不同的數字,然後按每個位數分別比較排序。1.先將每個數字按照個位數排序 2.再將每個數字按照十位數排序 3.按照這樣的方式排至最高位 將無序數列變有序 coding utf 8 defradixsort series,digit a 0while a digit buck...