哪种排序方法最适合并行处理?

时间:2009-11-23 15:53:38

标签: algorithm sorting parallel-processing

我现在正在查看我的旧学校作业,并希望找到问题的解决方案。

哪种排序方法最适合并行处理?

  1. 冒泡排序
  2. 快速排序
  3. 合并排序
  4. 选择排序
  5. 我想快速排序(或合并排序?)就是答案。

    我说错了吗?

6 个答案:

答案 0 :(得分:15)

与合并排序一样,快速排序也可以轻松并行化,因为它具有分而治之的特性。单个就地分区操作很难并行化,但一旦划分,列表的不同部分可以并行排序。

并行快速排序优于其他并行排序算法的一个优点是不需要同步。一旦子列表可供其工作,就会启动新线程,并且它不与其他线程通信。当所有线程完成后,排序就完成了。

http://en.wikipedia.org/wiki/Quicksort

答案 1 :(得分:10)

完全取决于并行化的方法。对于多线程通用计算,合并排序提供了非常可靠的负载平衡和内存本地化属性。对于大型sorting network硬件,如果你想要良好的O(log²n)性能,那么Batcher,Bitonic或Shell排序的形式实际上是最好的。

答案 2 :(得分:4)

我认为合并排序

你可以划分数据集并对它们进行并行操作。

答案 3 :(得分:1)

我认为Merge Sort将是最好的答案。因为合并排序背后的基本思想是将问题分解为单独的解决方案。解决它们并合并它们。

这也是我们在并行处理中实际做的事情。将整个问题划分为小单位语句以并行计算,然后加入结果。 感谢

答案 4 :(得分:1)

只是几句随机的评论:

  1. 关于并行化快速排序是多么容易的许多讨论忽略了枢轴选择。如果您遍历数组以找到它,那么您已经引入了线性时序组件。
  2. Quicksort在分布式内存中根本不容易实现。 Kumar书中有一个讨论
  3. 是的,我知道,不应该使用冒泡排序。但是"奇数 - 偶数换位排序",或多或少是等价的,实际上是一个非常好的并行编程练习。特别是对于分布式存储器并行性。这是分类网络中最简单的例子,在MPI等中非常可行。

答案 5 :(得分:0)

它是合并排序,因为排序是在两个子数组上完成的,并且它们在最后进行比较和排序。这些可以并行完成