最佳答案
在串行情况下,排序采用 O (n log n)。如果我们有 O (n)处理器,我们希望线性加速。O (logn)并行算法是存在的,但它们的常数很高。它们也不适用于没有接近 O (n)处理器的普通硬件。对于 p 处理器,合理的算法需要 O (n/p logn)时间。
在串行情况下,快速排序平均具有最好的运行时复杂度。并行快速排序算法易于实现(参见 给你和 给你)。然而,由于第一步是在单个核上对整个集合进行分区,因此它的性能并不好。我已经找到了许多并行排序算法的信息,但到目前为止,我还没有看到任何指向一个明确的赢家。
我希望对运行在8到32个核上的 JVM 语言中的100万到1亿个元素进行排序。