2S-1D vs 2S-2D vs Polyphase文件排序

时间:2018-04-24 15:16:07

标签: file sorting time-complexity file-sorting

有人可以向我解释哪一个更好,他们的时间和空间复杂性以及您认为值得了解的重要事项的比较。我知道2S1D和2S2D是如何工作的。

1 个答案:

答案 0 :(得分:0)

我假设“S”表示源,“D”表示目的地,因此您将比较2个源1目标与2个源2目标,以及普通合并排序与多相合并排序。维基文章包括以下情况:

https://en.wikipedia.org/wiki/Polyphase_merge_sort

请注意,维基文章主要关注外部排序,忽略比较开销,仅考虑数据移动。

对于具有随机存取存储器的内部普通合并排序,2S-2D排序仅需要两个阵列,因为2个源可以在单个源阵列中偶数和奇数运行,并且输出也可以是单个阵列。对于内部多相合并排序,您至少需要3个阵列(2S-1D)。在我的系统上,即使3个阵列多相合并排序比2个阵列普通合并排序多5%左右,多相结束的速度提高约5%,可能是由于缓存问题。

Trivia - 对于3堆栈(仅限LIFO接口版本的2S-1D),多相合并排序是最快的。