八大排序之基數排序

2021-10-08 17:02:37 字數 955 閱讀 1837

開始研究基數排序,還以為很複雜呢,誰知道也挺簡單的,它是一種非比較的排序,首先找到最大的位數,也就是先確定裡面最大的數有幾位,依次對個位,十位,等進行排序,它的原理就是你在對個位的大小進行排序時, 算了,還是放圖吧:

個位排序

它已經出現了基本有序(相對於十位來說),如,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 以中點二分,接著把左邊子區間排序,再把右邊子區間排序,最後把左區間和右區間用一次歸...