一、計數排序
計數排序(Counting sort)是一種穩定的排序算法
算法的步驟如下:
找出待排序的數組中最大和最小的元素
統計數組中每個值為i的元素出現的次數,存入數組C的第i項
對所有的計數累加(從C中的第一個元素開始,每一項和前一項相加)
反向填充目標數組:將每個元素i放在新數組的第C(i)項,每放一個元素就將C(i)減去1
當輸入的元素是 n 個 0 到 k 之間的整數時,計數排序的時間復雜度為O(N+K),空間復雜度為O(N+K)。當K不是很大時,這是一個很有效的線性排序算法。
以下是測試代碼:
# c[i]表示data中值<=i 的元素個數
for i in range(1, max+1):
c[i] = c[i] + c[i-1]
# 在將C中的元素倒著打印出來就是排序好的
for j in xrange(len(data)-1, -1, -1):
result[c[data[j]]-1] = data[j]
c[data[j]] = c[data[j]]
主站蜘蛛池模板:
呼玛县|
宁夏|
太原市|
大关县|
桐庐县|
稻城县|
和平区|
华宁县|
阳信县|
登封市|
乃东县|
大洼县|
阆中市|
惠州市|
墨玉县|
泾源县|
建阳市|
辽阳市|
永胜县|
阿尔山市|
云龙县|
资中县|
大足县|
广河县|
清丰县|
临邑县|
澎湖县|
长汀县|
阿鲁科尔沁旗|
西畴县|
武安市|
建瓯市|
河津市|
泽库县|
衡南县|
湘乡市|
白河县|
翁牛特旗|
渝中区|
黎川县|
综艺|