在第i个索引上找到元素而不进行排序和O(n)复杂度

时间:2015-03-01 18:53:03

标签: arrays algorithm time-complexity

最近我遇到了一个问题,

有一个未排序的n个元素数组。一旦我们对数组进行排序, i 索引会有一个元素。您如何在未排序数组的O(n)复杂度中找到 i 索引中的哪个元素?

我尝试了很多方法,最后我得出结论,我们可能需要使用哈希映射。但后来我发现哈希映射实现通常遵循插入时具有log n复杂度的树结构。

我该怎么办?

1 个答案:

答案 0 :(得分:3)

您需要线性时间选择算法。在最坏的情况下,它的运行时间是O(n)。您可以在Introduction to Algorithms, Second Edition或互联网上的“9.3最差情况线性时间选择”一章中找到它的说明,例如here
您还可以使用随机选择算法。它具有预期的线性时间。您可以在同一本书的“9.2预期线性时间的选择”一章中找到它的描述。