我们如何使并行排序排序使用任意数量的处理器在O(1)时间内运行

时间:2013-04-19 00:38:46

标签: algorithm sorting parallel-processing

我知道并行排序的实现,其中O(n ^ 2)个处理器需要O(log n)时间。如果我们使用并发写入,那么我们可以用O(n)获得O(1)运行时间^ 2)处理器。 有没有其他方法我们不使用并发读取,运行时间是O(1)。

1 个答案:

答案 0 :(得分:0)

基于比较的排序需要至少O(n log n)个比较。如果您不允许并发读取,则在时间O(1)中使用n个值进行排序,您可以读取(或操作)最多O(n)次的值。所以我认为没有并发读取的O(1)并行排序必须是非常奇特的。实际上,请考虑排序的任何单个值输出,例如第一个值,它可能是最低的输入值。这取决于所有n个输入值。如果没有并发读取,我认为您可以将任何计算单个值的进程表示为在每个节点处具有有界度的树以及在根处计算的值。所花费的时间是树的深度,必须至少为O(log n)。