在不排序且复杂度为 O(n) 的情况下查找第 i 个索引上的元素
Find the element on i th index without sorting and in O(n) complexity
最近遇到一个问题,
存在一个包含 n 个元素的未排序数组。一旦我们对数组进行排序,
i 第一个索引将有一个元素。你如何找到哪个元素将出现在 i th index in O(n)
complexity on the unsorted array?
我试了很多方法,最后得出的结论是我们可能需要用到hash map。但是后来我发现hash map的实现通常遵循树结构,插入的复杂度log n
。
我该如何进行?
您需要线性时间选择算法。它的运行时间在最坏情况下是O(n)。您可以在 Introduction to Algorithms, Second Edition or on the Internet e.g. here.
的“9.3 最坏情况线性时间中的选择”一章中找到它的描述
您还可以使用随机 select 算法。它具有预期的线性时间。详见同书“9.2 期望线性时间选择”
最近遇到一个问题,
存在一个包含 n 个元素的未排序数组。一旦我们对数组进行排序,
i 第一个索引将有一个元素。你如何找到哪个元素将出现在 i th index in O(n)
complexity on the unsorted array?
我试了很多方法,最后得出的结论是我们可能需要用到hash map。但是后来我发现hash map的实现通常遵循树结构,插入的复杂度log n
。
我该如何进行?
您需要线性时间选择算法。它的运行时间在最坏情况下是O(n)。您可以在 Introduction to Algorithms, Second Edition or on the Internet e.g. here.
的“9.3 最坏情况线性时间中的选择”一章中找到它的描述
您还可以使用随机 select 算法。它具有预期的线性时间。详见同书“9.2 期望线性时间选择”