**:
計數排序,這種排序演算法不是基於元素比較,而是利用陣列下標來確定元素的正確位置。
建立陣列a,按照待排序陣列的值b,根據每個b值對應a的下標++。有了這個統計結果,排序就很簡單了,直接遍歷陣列,輸出陣列元素的下標值,元素的值是幾,就輸出幾次。
它適用於一定範圍的整數排序。在取值範圍不是很大的情況下,它的效能在某些情況甚至快過那些o(nlogn)的排序,例如快速排序、歸併排序。
使用max-min,可以確保範圍,如果有重複的資料元素,就累加,統計陣列每個值表示的是對應值重新排序後的下標位置。
如果原始數列的規模是n,最大最小整數的差值是m,時間複雜度是o(n+m)。和它的具體過程有關,首先遍歷n統計次數,後來遍歷m反向填充。
如果不考慮結果陣列,只考慮統計陣列的話,空間複雜度是o(m)。
1.當數列最大最小值差距過大時,並不適用於計數排序
會導致空間的浪費
2.當數列元素不是整數時,並不適用於計數排序
無法形成空間。
//這個是基序排序的基礎。
基礎演算法 6 不基於比較的排序
o n 不基於比較的排序演算法 在接下來的幻燈片,我們將討論兩種不基於比較的排序演算法 計數排序和基數排序。這些排序演算法可以通過不比較陣列的專案來比時間複雜度為 n log n 的基於比較的排序演算法的下限更快。排序演算法的下限 我們都知道 在這個視覺化中也沒有證明,因為它需要花費乙個小時的講座來...
非比較排序 計數排序
計數排序 count sort 是乙個非基於比較的排序演算法,該演算法於1954年由 harold h.seward 提出。它的優勢在於在對一定範圍內的整數排序時,它的複雜度為 n k 其中k是整數的範圍 快於任何比較排序演算法。計數排序的思想類似於雜湊表中的直接定址法,在給定的一組序列中,先找出該...
計數排序 非比較排序
1.統計相同元素出現的個數 2.根據統計結果將序列 到原來的序列中 整體思路如下圖 判斷最大最小值的差值 int a newint count 開空間 memset a,0 sizeof int count 記得將原空間清空 for int i 0 i n i int j 0 int q 0 whi...