以下以[ 1,3,5,8,2,5,4 ]這組數字來演示。
首先,我們找到這組數字中最大的數,也就是 bucketlen = 8,建立乙個最大下標為 8 的空陣列 bucket 。
遍歷資料,將資料的出現次數填入bucket中對應的下標位置中。
遍歷 bucket ,將資料依次取出即可。
def countingsort(arr, maxvalue):
bucketlen = maxvalue+1
bucket = [0]*bucketlen
sortedindex =0
arrlen = len(arr)
for i in range(arrlen):
if not bucket[arr[i]]:
bucket[arr[i]]=0
bucket[arr[i]]+=1
for j in range(bucketlen):
while bucket[j]>0:
arr[sortedindex] = j
sortedindex+=1
bucket[j]-=1
return arr
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計數排序
對每個元素確定小於該元素的個數 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 每個減輕去...