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