并行合并排序总是值得吗?

时间:2014-10-07 13:43:45

标签: sorting parallel-processing mergesort

所以,我知道如果我有n个数据和p个处理器,像mergesort这样的算法会将这个数据分成每个处理器的n / p数据,并为数据的每个子部分运行顺序排序算法。然后它会将它们重新组合在一起(对它们进行排序)。 我想知道的是,如果这总是比简单地使用n上的顺序mergesort更快? 由于我们对n / p数据进行操作,但由于我们有额外的时间用于并行操作,我看到时间复杂度在下降...

我在想,如果我设置了两个方程式,它们看起来应该是这样的:

N / p log2 N / p + 2N-2 = N * log2 N

其中左侧是并行算法,右侧是非平行算法。这是正确的,我将如何解决它?

1 个答案:

答案 0 :(得分:0)

以2个处理器为例。为简单起见(并且由于你没有另外说明),我将假设共享内存。

顺序情况将依次为:

  1. 排序一半
  2. 排序另一半
  3. 合并两半
  4. 并行案例将执行相同的步骤,但执行步骤1和步骤1 2并联;唯一增加的工作是管理进程/线程的任何开销。

    随着处理器数量的增加,并行部分所需的时间将减少,加快速度,直到它被管理并行位的开销所取代。