計數器排序是是一種簡單直觀且穩定的排序算法。如果已知一個輸入數組中的元素x,我們知道了這個數組中比x小的元素的個數,那么我們就可以直接把x放到(x+1)的位置上,這就是計數排序的基本思想。在計數器排序中,單個元素的次序主要依賴於他們之間的比較,所以這一類的排序算法也屬於比較排序的一種。基於這個思想,計數排序的一個主要問題就是如何統計數組中元素的個數。
如果當存在幾個相同的元素時,則需要對排序進行做適當的調整,因為不能把所有的元素放到同一個位置上。
基本介紹
- 中文名:計數器排序
- 外文名:Sorting by counter
- 類型:排序算法
- 分類:計算機科學-排序算法-比較排序
原理
實現原理
實現步驟
實現語言
def sort(l):
n = len(l)
res = [None] * n
# 首次循環遍歷, 每個列表的數都統計
for i in range(n):
# p 表示 a[i] 大於列表其他數 的次數
p = 0
# q 表示 等於 a[i] 的次數
q = 0
# 二次循環遍歷, 列表中的每個數都和首次循環的數比較
for j in range(n):
if l[i] > l[j]:
p += 1
elif l[i] == l[j]:
q += 1
for k in range(p, p+q): # q表示 相等的次數,就表示, 從 P 開始索引後, 連續 q 次,都是同樣的 數
res[k] = l[i]
return res
print(sort([5,5,5,4,3,54,6,76,34,31,9,43,7,12,11,3]))
#輸出結果 [3, 3, 4, 5, 5, 5, 6, 7, 9, 11, 12, 31, 34, 43, 54, 76]