計數排序的特色:python
def counting_sort(A, k):
# k = max(A) + 1
C = [0]*k
for i in A: # 統計 A 中各個數出現的次數,C 的下標爲 A 的元素值
C[i] += 1
for i in range(1, len(C)):
C[i] += C[i-1] # 不斷累加
# print('C: ', C) # C 的下標爲 A 的元素值, C 下標對應的值爲此元素值應在排序後的序列中的位置
B = [0]*(len(A)+1)
for i in A[::-1]:
B[C[i]] = i # C 下標對應的值爲此元素值應在排序後的序列中的位置
C[i] -= 1 # 原始序列中重複出現的數字在排序過程當中不斷地向前排;
return B
if __name__ == '__main__':
A = [2, 5, 3, 0, 2, 3, 0, 3]
k = max(A)+1
B = counting_sort(A, k)
print('B: ', B)