關於計數排序

2021-06-05 22:35:33 字數 454 閱讀 7127

待排序序列:a[n]

排序後的陣列:b[n]

記錄a中某個資料在表b中的位置:count[n](存的是值為比該資料小的資料的個數)

計數排序演算法針對待排序陣列中的每個記錄,掃瞄待排序的陣列一趟,統計待排序陣列中有多少個記錄的值比該記錄的值小。假設針對某乙個記錄,統計出的計數值為c,那麼,這個記錄在新的有序陣列中的合適的存放位置即為c。

這樣可以看到,每個資料都需要和自己之後的資料進行比較,一直掃到待排陣列的尾部,可以得到陣列count[n]。這個過程的時間複雜度為o(n^2)

得到count之後的操作為:b[count[i]]=a[i],掃瞄一遍a陣列,得到的b即為排序後的陣列。

這個過程的時間複雜度為:o(n).

整個過程的時間複雜度應該為o(n^2).

計數過程的時間複雜度高於計數之後的排序過程。

為什麼有說計數排序是線性的說法?計數不花時間了?沒理由。

python計數排序 Python 計數排序

1.python coding utf 8 def counting sort a,b,k 計數排序,偽碼如下 counting sort a,b,k 1 for i 0 to k 初始化儲存區的值 2 do c i 0 3 for j 1 to length a 為各值計數 4 do c a j ...

排序 計數排序

資料結構和演算法系列目錄 不斷更新 計數排序是一種線性時間的排序,它的時間複雜程度為o n 雖然是線性的時間複雜程度,但是它的空間複雜程度比較高,而且用之前需要有乙個硬性的前提。這個前提在後面給出,這裡先來簡單介紹一下計數排序。計數排序是先掃瞄一邊待排序陣列,並用乙個輔助陣列記錄待排序每個元素應該在...

排序 計數排序

計數排序假設n個輸入元素中的每乙個都是在0到k區間內的乙個整數,其中k為某個整數。當k o n 時,排序的執行時間為 n 計數排序的基本思想是 對每乙個輸入元素x,確定小於x的元素個數。利用這一資訊,就可以直接把x放到它在輸出陣列中的位置上了。例如,如果有17個元素小於x,則x就應該在第18個輸出位...