假設您有n個整數,範圍從0到n^3-1。有沒有什麼辦法可以在O(n)時間對它們進行分類?我得到了Uni的這個問題,據我所知,只能使用mergesort或quicksort在NlogN中搜索它們,所以我懷疑這是一個詭計的問題。我還想知道爲什麼給出了(0,n^3-1)的特定範圍?它有什麼特別的特徵嗎?我也在考慮使用Counting Sort來做它們,但據我所知,它運行在O(n + k)時間內,而不是O(n)。請幫忙!對O(n)中的數組進行排序
-1
A
回答
0
使用「計數排序」,您可以在O(n)中的最後n位以穩定的方式對項進行排序。然後你可以在中間位上排序,然後在最高位上排序。因爲密鑰小於n^3 - 1,所以計數排序的數量是固定的(三個),而O(n)的三倍仍然是O(n)。
+0
AKA基數排序。 –
+1
是不是基數排序? –
相關問題
- 1. 3對已排序的數組進行排序。 O(NlogN)實現
- 2. 如果只有從1到n的元素,是否可以對O(n)中的數組進行排序?
- 3. 對數組進行排序
- 4. 對數組進行排序
- 5. 在O(n)時間的雙維數組排序排序
- 6. 對Vue.js中的數組進行排序
- 7. 算法 - 計算O(n)中排序數組中所有對數相等的數?
- 8. 對數組或數組進行排序?
- 9. 在O(n)中查找排序數組中的插入點?
- 10. 在Erlang中對數組進行排序
- 11. 在MATLAB中對數組進行排序
- 12. 在perl中對數組進行排序
- 13. 在PHP中對數組進行排序
- 14. 在ruby中對數組進行排序
- 15. 在Simulink中對數組進行排序
- 16. 在awk中對數組進行排序
- 17. 在PHP中對數組進行排序
- 18. 在Mongo中對數組進行排序
- 19. 在Lua中對數組進行排序
- 20. 按Θ(n)複雜度對數組進行排序
- 21. 按升序對數組進行排序
- 22. 按降序對數組進行排序
- 23. 按降序對數組進行排序
- 24. 堆棧排序O(N)
- 25. 如果數組有問題,可以在O(n)中排序
- 26. 從小於O(log(n))運行時間的排序數組中搜索
- 27. 排序算法最適合對排序數組進行排序
- 28. O(N)查找,但O(日誌(N))的比較排序列表
- 29. 在javascript對象數組中進行排序和排序
- 30. 按PHP中子數組的值對數組進行排序
您可能需要基數排序。好讀:http://www.geeksforgeeks.org/radix-sort/ – Ben
如果O(K)是O(N),則計數排序在O(N)中運行。 – Nuclearman