假设我有一个数组,大小为 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/