計數排序 python

2021-10-25 22:32:47 字數 600 閱讀 6056

以下以[ 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 每個減輕去...