在O(n)中对数组进行排序

时间:2014-06-21 17:15:16

标签: arrays sorting complexity-theory

假设您有0到n ^ 3-1范围内的n个整数。有没有什么办法可以在O(n)时间内对它们进行排序?我得到了Uni的这个问题,据我所知你只能使用mergesort或quicksort在NlogN中搜索它们,所以我怀疑这是一个技巧问题。我也想知道为什么给出了(0,n ^ 3-1)的特定范围?它有什么特别的特征吗?我也在考虑使用Counting Sort来做它们,但据我所知,它在O(n + k)时间运行,而不是O(n)。请帮忙!

1 个答案:

答案 0 :(得分:0)

使用" Counting Sort",您可以在O(n)的最后n位上以稳定的方式对项目进行排序。然后你可以对中间位进行排序,然后对最高位进行排序。由于密钥小于n ^ 3 - 1,因此存在固定数量的计数排序(三个),并且三次O(n)仍然是O(n)。