假设您有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