開始研究基數排序,還以為很複雜呢,誰知道也挺簡單的,它是一種非比較的排序,首先找到最大的位數,也就是先確定裡面最大的數有幾位,依次對個位,十位,等進行排序,它的原理就是你在對個位的大小進行排序時, 算了,還是放圖吧:
個位排序
它已經出現了基本有序(相對於十位來說),如,142, 157,142也就在157前面,然後十位排序。
依次類推
def radix_sort(array):
i = 0
max_num = max(array)
j = len(str(max_num))
while i < j:
bucket_list = [ for _ in range(10)]
# print(bucket_list)
for x in array:
print(bucket_list)
array.clear()
# 雙層列表 轉為 單層列表
for x in bucket_list:
for y in x:
# 個位數有序,說明相對位置有序,再排十位,就有序了
# tips: int(x / (10 ** i)) % 10 取整數x第i位的值, i=0, 取個位; i=1, 取十位; 以此類推。
i += 1
測試**:
真是秒啊!
八大排序之基數排序
個人部落格 建議先看排序綜述,傳送門 資料結構與演算法系列之一 八大排序綜述。基數排序 英語 radix sort 是一種非比較型整數排序演算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。由於整數也可以表達字串 比如名字或日期 和特定格式的浮點數,所以基數排序也不是只能使用於整數...
八大排序 基數排序
基數排序 將整形10進製按每位拆分,然後從低位到高位依次比較各個位。每次比較完進行排序,直到整個陣列有序 主要分為兩個過程 1 分配,先從個位開始,根據位值 0 9 分別放到0 9號桶中 比如53,個位為3,則放入3號桶中 2 收集,再將放置在0 9號桶中的資料按順序放到陣列中 重複 1 2 過程,...
八大排序之歸併 基數排序
歸併排序 將兩個或兩個以上的有序表組合乙個新的有序表稱為 歸併 先使每個子串行有序,再歸併使子串行段有序,最後得到完全有序的序列。演算法思想 我們通常用遞迴實現,先把待排序區間 startindex,endindex 以中點二分,接著把左邊子區間排序,再把右邊子區間排序,最後把左區間和右區間用一次歸...