algorithm - 哪个会更快?

标签 algorithm complexity-theory

假设我有一个数组,大小为 40。我要查找的元素位于位置 38。 有一个简单的循环,需要 38 步,对吗? 但是,有 2 个循环,并行运行,和一个变量,“找到” 设置为 false,并在找到元素时更改为 true。

第一个循环,将从索引 0 开始 第二个循环将从索引 40 开始。

所以基本上,只需要 4 个步骤,对吧?找到元素。最坏的情况是元素位于数组的中间。对吧?

最佳答案

这取决于同步两个线程之间的状态需要多少工作。

如果它需要 0 个工作,那么这将比直通算法平均快 50%。

另一方面,如果它比 X 需要更多的工作,它就会开始变慢(很可能是这种情况)。

从算法的角度来看,我认为这不是您想要的方式。即使是 2 个线程仍将是 O(n) 运行时。您可能希望对数据进行排序 (n log n ),然后进行二分查找以获取数据。特别是您可以对它进行 1 次排序并将其用于多次搜索...

关于algorithm - 哪个会更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4628076/

相关文章:

algorithm - 子集和的变化

c# - windows服务的备份算法

algorithm - 使用变量受范围限制的单纯形法求解 LPP

algorithm - Prim的算法时间复杂度如何,ElogV使用Priority Q?

algorithm - 大 O 概念/算法逻辑,不确定我的解决方案,不太擅长循环

algorithm - 如果在索引 k 处翻转一位的成本现在为 2^k 而不是 1,那么二进制计数器中的摊销分析会发生什么情况?

c++ - 坐标排序

c++ - unordered_map 复杂度

algorithm - 非常复杂的递归代码的时间复杂度

algorithm - 复杂度是 O(kM(n)) 多项式复杂度吗?