在串行情况下,排序需要O(n log n)。如果我们有O(n)个处理器,我们希望线性加速。存在O(log n)个并行算法,但是它们具有很高的常数。它们也不适用于没有O(n)处理器的商品硬件。对于p个处理器,合理的算法应花费O(n / p log n)时间。
在串行情况下,快速排序平均具有最佳的运行时复杂性。并行快速排序算法很容易实现(请参阅此处和此处)。但是,由于最初的步骤是将整个集合分区在单个内核上,因此执行效果不佳。我已经找到了许多并行排序算法的信息,但到目前为止,我还没有发现任何指向明确赢家的信息。
我希望以运行8到32个内核的JVM语言对100万到1亿个元素的列表进行排序。