在未排序数组中搜索元素的最快方法

我今天碰到了这个问题,并试图寻找一种优于O(N)但无法提出解决方案的解决方案。

通过SO搜索,但找不到此问题。

有没有比O(n)更好的解决方案,或者是无法解决比这个更好的问题?

我最初的想法是二进制搜索,但是再次需要对它进行排序,即>

n。我还考虑过将快速排序仅应用于搜索元素可能属于的数组的一半,但同样,我们最初进行n次比较,而仅在以后丢弃另一半。我是对的还是看错了方向的解决方案?

我正在尝试使用c ++解决方案,并且没有javascript的IndexOf()或C#Array.find()或LINQ。

回答:

使其平行。将数组划分为多个块,然后并行搜索。复杂度为O(n),但运行时间会少得多。实际上,它与否成正比。您拥有的处理器数量。

您可以在C ++中使用并行模式库

以上是 在未排序数组中搜索元素的最快方法 的全部内容, 来源链接: utcz.com/qa/414320.html

回到顶部