計數排序(counting sort)——字典計數-還原
計數排序的核心在於將輸入的資料值轉化為鍵儲存在額外開闢的陣列空間中。
作為一種線性時間複雜度的排序,計數排序要求輸入的資料必須是有確定範圍的整數
計數排序是一種穩定的排序演算法。計數排序使用乙個額外的陣列c,其中第i個元素是待排序陣列a中值等於i的元素的個數。
然後根據陣列c來將a中的元素排到正確的位置。它只能對整數進行排序。
時間複雜度為o(n+k),k代表整數的範圍,最好最壞的情況相同。
空間複雜度為o(k)
d0 =[2
,15,5
,9,7
,6,4
,12,5
,4,2
,64,5
,6,4
,2,3
,54,45
,4,44
]d0_out =[2
,2,2
,3,4
,4,4
,4,5
,5,5
,6,6
,7,9
,12,15
,44,45
,54,64
]d_max =
0d_min =
0for i in d0:
if d_maxd_max = i
if d_min>i:
d_min = i
d1 =
for i in d0:
if i in d1.keys():
d1[i]+=1
else
: d1[i]=1
d2 =
for i in
range
(d_min,d_max+1)
:if i in d1.keys():
for j in
range
(d1[i]):
print
(d2)
排序演算法系列
概述 概念 排序是計算機內經常進行的一種操作,其目的是將一組 無序 的記錄序列調整為 有序 的記錄序列。排序分為內部排序和外部排序。若整個排序過程不需要訪問外存便能完成,則稱此類排序問題為內部排序。反之,若參加排序的記錄數量很大,整個序列的排序過程不可能在記憶體中完成,則稱此類排序問題為外部排序。排...
排序演算法系列 選擇排序
選擇排序可以說是眾多排序演算法中,最基礎 最直觀的乙個演算法了。它的思想十分簡單 遍歷列表,找出最小的乙個數,記下索引 將最小的數新增到新的列表中,同時刪除原陣列中的數 重複第一步 舉個例子 假如現在有乙個無序陣列disorder arr 4,2,19,10,1 和乙個空陣列order arr 第一...
排序演算法系列 氣泡排序
氣泡排序是是一種比較基礎簡單的演算法。它的原理是通過對比前後的元素大小,將較大的數換到後面的方式來實現排序 舉個例子 假如現在有乙個無序陣列disorder arr 4,2,19,10,1 第一步 取第0個元素4,和第1個元素2 對比,發現4比2大。第二步 交換4與2的索引。即第0個元素為2,第1個...