最近我遇到了一个问题,
有一个未排序的n个元素数组。一旦我们对数组进行排序,
i 索引会有一个元素。您如何在未排序数组的O(n)
复杂度中找到 i 索引中的哪个元素?
我尝试了很多方法,最后我得出结论,我们可能需要使用哈希映射。但后来我发现哈希映射实现通常遵循插入时具有log n
复杂度的树结构。
我该怎么办?
答案 0 :(得分:3)
您需要线性时间选择算法。在最坏的情况下,它的运行时间是O(n)。您可以在Introduction to Algorithms, Second Edition或互联网上的“9.3最差情况线性时间选择”一章中找到它的说明,例如here。
您还可以使用随机选择算法。它具有预期的线性时间。您可以在同一本书的“9.2预期线性时间的选择”一章中找到它的描述。