十大經典排序演算法之基數排序 python

2021-10-07 17:58:14 字數 717 閱讀 9415

原理:a[1,20,36,44,6,9,102,86,94,5],乙個即將排序的陣列a,準備一排0-9依次排好序的桶,先判斷a陣列中每個元素個位數的值,然後填入對應的桶裡,填完之後再從左到右依次從桶裡取出來;接著對新排好序的陣列從十位判斷,位數不夠預設為0,以此迴圈,直到a陣列中最大的元素的最高位排完序後,就得到了乙個從左到右,依次遞增的陣列了。

由於python有max內建函式,我這裡也沒有使用。就不多做闡述了,對於很多語言來說,獲取陣列內的最大值可能在演算法中佔時間複雜度的比重比較大。

下面來看下**:

def redix_sort(s):

max_num = 0

for i in s:

if len(str(i))>max_num:

max_num = len(str(i))

else:

pass

i = 0

while ib = [ for _ in range(10)] #定義十個桶

for x in s:

s.clear()

for j in b:

s = s + j

i+=1

return s

if __name__ == '__main__':

a = [11,22,66,99,77,123,55,789,963,44]

print(radix_sort(a))

十大經典排序演算法 基數排序

一 演算法複雜度 二 實現流程 1 尋找最長元素的位的數量 2 按照最低位值的大小進行排序,然後再按照次高位的值排序 3 直到每乙個位都比較之後就能得到最終的排序結果 三 實現 import numpy as np def radix sort arr max val arr 0 獲取最大值 max...

十大經典排序演算法(十 基數排序)

基數排序是一種非比較型整數排序演算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。基數排序有兩種方法 這三種排序演算法都利用了桶的概念,但對桶的使用方法上有明顯差異 1 ar counter 2function radixsort arr,maxdigit 11counter bu...

十大經典排序演算法 基數排序01

基數排序是按照低位先排序,然後收集 再按照高位排序,然後再收集 依次類推,直到最高位。有時候有些屬性是有優先順序順序的,先按低優先順序排序,再按高優先順序排序。最後的次序就是高優先順序高的在前,高優先順序相同的低優先順序高的在前。演算法步驟 將所有待比較數值 正整數 統一為同樣的數字長度,數字較短的...