題目描述:
如何對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),代碼略