Arrays 查找第i个索引上的元素,无需排序,且复杂度为O(n)

Arrays 查找第i个索引上的元素,无需排序,且复杂度为O(n),arrays,algorithm,time-complexity,Arrays,Algorithm,Time Complexity,最近我遇到一个问题 有n个元素的未排序数组。一旦我们对数组进行排序, ith索引将有一个元素。在未排序的数组中,您如何在O(n)复杂性中的ith索引中找到哪个元素 我尝试了很多方法,最后得出结论,我们可能需要使用哈希映射。但后来我发现哈希映射实现通常遵循一种树结构,这种树结构在插入时具有logn复杂性 我该如何继续?您需要线性时间选择算法。在最坏的情况下,其运行时间为O(n)。您可以在Internet的第9.3章“最坏情况下线性时间的选择”中找到其说明,例如… 您还可以使用随机选择算法。它具有预

最近我遇到一个问题

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

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


我该如何继续?

您需要线性时间选择算法。在最坏的情况下,其运行时间为O(n)。您可以在Internet的第9.3章“最坏情况下线性时间的选择”中找到其说明,例如…
您还可以使用随机选择算法。它具有预期的线性时间。您可以在同一本书的“9.2在预期线性时间内的选择”一章中找到它的描述。

哈希映射(正如其名称所示)是使用哈希表实现的(其摊销插入复杂性为
O(1)
)。否则,它们将被称为树映射,并使用二元搜索树实现(并且具有摊销插入复杂性
O(log(n))
);)