關於計數排序

待排序序列: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).

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章