排序演算法10 基數排序 Python實現

2021-09-17 21:59:15 字數 843 閱讀 4397

基數排序是從低位到高位按某一位來排序

所以需要知道列表中的最大值,以獲取它的位數,確定迴圈的次數

每次迴圈需要建乙個長度為10的列表,元素為空列表,下標對應每個數的某一位

即第一次迴圈,如果某個數個位為3,則放入下標為3的列表中

第二次迴圈,按十位進行

每次迴圈結束,遍歷二維列表,將元素依次賦給原列表,即第一次迴圈結束後,得到了個位有序的列表

第二次迴圈結束,得到個位和十位有序的列表

a = [9, 78, 54, 91, 86, 53, 88, 66, 46, 15]

"""獲取最大的數,並求它的位數"""

max = 0

for i in a:

if i > max:

max = i

num = 0

while max:

num += 1

max = max//10

"""建立二維列表,存放某一位為0,1,,,9的數"""

for i in range(1, num+1):

temp = [ for j in range(10)]

for item in a:

z = (item % (10**i))//(10**(i-1)) #獲得個位,十位,,,的數

count = 0

for list in temp: #按順序賦值給a

for x in list:

a[count] = x

count += 1

print(a)

"""迴圈num次"""

排序演算法 基數排序

基數排序 思想 基數排序屬於 分配式排序 分為高位優先法msd和低位優先法lsd 低位優先法lsd 從最低位k0開始排序 對於排好的序列再用次低位k1排序 依次重複,直至對最高位kd 1排好序後,整個序列稱為有序的 這是乙個分 收 分 收 分 收的過程 特點 穩定 空間複雜度 o dn 時間複雜度 ...

排序演算法 基數排序

一 基數排序的思想 不直接比較數與數的大小。把待排序的整數按位分,分為個位,十位 從小到大依次將位數進行排序。實際上分為兩個過程 分配和收集。分配就是 從個位開始,按位數從小到大把資料排好,分別放進0 9這10個桶中 收集就是 依次將0 9桶中的資料放進陣列中 重複這兩個過程直到最高位 二 過程 比...

排序演算法 基數排序

基數排序稱桶排序。它按照記錄的各位值逐步進行排序。適用於整數型別的排序。基數排序不同於別的排序方法通過比較和交換來排序,它是通過按照桶來分配和收集的方法實現的。基本思想 假設待排序的記錄都是m位d進製 不足m位的高位補0 設定d個桶 0,1,d 1 首先將序列中的記錄按照最低位值的大小分配到各個桶中...