時間復雜度O(n),空間復雜度O(1)的排序


題目描述:

如何對n個數進行排序,要求時間復雜度O(n),空間復雜度O(1)

 

解析:

利用計數排序法,設置一大小為65536的int數組,范圍a[0]~a[65535],並初始為0,然后遍歷n個數,假設這n個數在數組array[0...n-1]中,則i取值從0到n-1同時執行a[array[i]]++,最后再依照順序讀數組a,遇到不為0時,將對應的下標讀回數組array,計數是幾次就讀幾次,覆蓋原有數,這樣得出的array即為排序所求

因為空間復雜度大小已知,為65536,執行循環次數約為n+65536 ,所以其空間復雜度為O(n),空間復雜度O(1),代碼略


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM