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

咋一看會覺得沒有辦法實現,因爲所有的排序方法都無法滿足該時間複雜度o(n)和空間複雜度o(1)。

但是如果n是有限的,其實是有辦法可解的:假設n 沒有超過int的最大值 ,0<n<65536 這裏我們暫時不考慮爲負數的情況(負數也可解)。

可以定義一個大小爲65535的數組,遍歷n個元素,以其值做索引,值爲出現的個數

0 -》 array[0]++;

1 -》 array[1]++;

....

 

再遍歷array數組,根據array數組打印出現個數大於0的下標,打印的次數爲該下標的值



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