![]() |
2
6
我已经使用了并行快速排序算法和PSRS算法,它们基本上是将快速排序与合并结合在一起的。 使用并行快速排序算法,我演示了近线性加速,最多4个核心(双核心,超线程),考虑到算法的局限性,这是预期的。纯并行快速排序依赖于共享的堆栈资源,这将导致线程之间的争用,从而降低性能的任何增益。这种算法的优点是它可以“就地”排序,从而减少了所需的内存量。在按照您的说明对100米以上的元素进行排序时,您可能需要考虑这一点。 我看到你正在寻找一个8-32核的系统。PSRS算法避免了在共享资源上的争用,允许在更多进程上加速。我已经演示了上面提到的最多4个核心的算法,但是其他人的实验结果显示,核心数量更大,超过32个,几乎是线性加速。PSRS算法的缺点是它没有就位,需要相当多的内存。 如果您感兴趣,您可以使用或使用这些算法中的每一个Java代码。你可以在Github上找到它: https://github.com/broadbear/sort . 代码的目的是作为Java集合的替代。如果您正在寻找在上面所述的JVM中执行并行排序的能力,那么我的repo中的代码可能会帮助您解决问题。对于实现可比较或实现自己的比较器的元素,API是完全通用的。 我可以问一下你要为这些元素排序的目的是什么吗?我有兴趣了解我的分类包的潜在应用程序。 |
![]() |
3
4
看看这篇论文: A Scalable Parallel Sorting Algorithm Using Exact Splitting . 它涉及32多个核心。然而,它详细描述了一种运行时间复杂度为o(n/p*log(n)+p*log(n)**2)的算法,适用于任意比较器。 |
![]() |
4
2
|
![]() |
Rewind · 同时搜索最大值/最小值的操作顺序 6 月前 |
![]() |
badbee · 使用xsl:sort时保留未排序元素的问题 7 月前 |
![]() |
josepmaria · Pandas顺序列,按对列出 11 月前 |
![]() |
BTBts · Python3文件名的字母数字排序[重复] 11 月前 |
|
Paul-ET · 对树状图应用程序发送的第一列进行排序失败 11 月前 |
![]() |
VonDerHase · 从列表中删除特定值,Python 1 年前 |
![]() |
Nico44044 · JS对数组进行排序,数组末尾为null和空值 1 年前 |