python計數排序

2021-10-10 11:41:36 字數 871 閱讀 6433

對每個元素確定小於該元素的個數

def

countsort

(a, k)

:#k是元素數值上界

c =[0

]* k

result =[0

]*len(a)

for i in

range

(len

(a))

: c[a[i]

]= c[a[i]]+

1# 計算小於該元素的個數

for i in

range

((k-1)

):c[i+1]

= c[i+1]

+ c[i]

# 每個減輕去1是因為索引是從0開始,而計數是從1開始,會導致陣列越界

for i in

range

(k):

c[i]

= c[i]-1

for i in

range

(len

(a))

: result[c[a[i]]]

= a[i]

c[a[i]

]= c[a[i]]-

1#要減去,這樣有重複的時候就不會出錯

return result

a =[3,

12,20,

2,16,

14,14,

11,7,

14]re = countsort(a,21)

print

(re)

[2, 3, 7, 11, 12, 14, 14, 14, 16, 20]

python計數排序 Python 計數排序

1.python coding utf 8 def counting sort a,b,k 計數排序,偽碼如下 counting sort a,b,k 1 for i 0 to k 初始化儲存區的值 2 do c i 0 3 for j 1 to length a 為各值計數 4 do c a j ...

計數排序(python)

計數排序是乙個非基於比較的排序演算法。它的優勢在於在對一定範圍內的整數排序時,它的複雜度為 n k 其中k是整數的範圍 當o k o nlogn 時快於任何比較排序演算法。這是一種犧牲空間換取時間的做法,而且當o k o nlog n 的時候其效率反而不如基於比較的排序 基於比較的排序的時間複雜度在...

計數排序 python

以下以 1,3,5,8,2,5,4 這組數字來演示。首先,我們找到這組數字中最大的數,也就是 bucketlen 8,建立乙個最大下標為 8 的空陣列 bucket 遍歷資料,將資料的出現次數填入bucket中對應的下標位置中。遍歷 bucket 將資料依次取出即可。def countingsort...