對每個元素確定小於該元素的個數
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...