今天簡單的說下基數排序,基數排序比較特殊,他不用元素之間進行比較,也不用元素之間交換位置,你只需要堆元素進行分類就可以了,這個也恰巧就是基數排序的魅力。
基數排序思想:
基數排序是桶排序的一種擴充套件,將整數按位數分割成不同數字,然後按照每個位數分別比較
過程: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...