【问题标题】:Which sorting method is most suitable for parallel processing?哪种排序方式最适合并行处理?
【发布时间】:2009-11-23 15:53:38
【问题描述】:

我现在正在查看我以前的学校作业并想找到问题的解决方案。

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

  1. 冒泡排序
  2. 快速排序
  3. 归并排序
  4. 选择排序

我猜快速排序(或合并排序?)就是答案。

我说的对吗?

【问题讨论】:

    标签: algorithm sorting parallel-processing


    【解决方案1】:

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

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

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

    【讨论】:

    • +1:快速排序在拆分后不需要同步。合并排序需要同步才能合并。
    • “并行快速排序优于其他并行排序算法的一个优点是不需要同步”。错,没有。您显然需要等待子任务完成才能返回答案,这就是同步。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我认为归并排序

      您可以划分数据集并对它们进行并行操作..

      【讨论】:

      • 我的名字是 Ufuk Gün,但在英语中听起来很有趣 :)
      • Mergesort 需要线程之间同步来合并排序结果。快速排序不需要任何线程同步。
      【解决方案4】:

      我认为合并排序将是这里的最佳答案。因为归并排序背后的基本思想是将问题划分为单独的解决方案。解决它们并合并它们。

      这也是我们在并行处理中实际所做的。将整个问题分成小单元语句进行并行计算,然后将结果连接起来。 谢谢

      【讨论】:

        【解决方案5】:

        随便说几句:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 我认为没有必要复制现有的答案。
          猜你喜欢
          • 2020-07-10
          • 2018-12-06
          • 2021-02-11
          • 2011-02-27
          • 1970-01-01
          • 2012-07-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多