2015-01-14 30 views
0

是否有一種算法對n大小的數組進行排序和O(n)取值範圍[0..k]的整數值從[0..k]獲取整數值的n大小數組的排序和O(n)時間

+0

計數排序:http://en.wikipedia.org/wiki/Counting_sort沒有到位,需要額外的複製操作來複制源代碼。 O(n + k) –

+0

順便說一句,如果數據只包含數字(沒有附加信息),可以在適當的位置完成,在這種情況下,原始數組可以從直方圖完全重建。 –

回答

0

是的,有!考慮使用most-significant digit radix sort,有時稱爲二元快速排序。這個算法在原地工作,雖然它需要遞歸堆棧的O(log n)輔助空間(我不知道這是否是一個交易斷言器)。對最大值爲U的n個數字列表進行排序的運行時間爲O(n log U),在您的情況下,因爲k是固定常量,運行時間爲O(n)。

相關問題