Data structures 哪个优先级队列在实践中更快?

Data structures 哪个优先级队列在实践中更快?,data-structures,heap,Data Structures,Heap,最常用的操作:FindMin。不太常见:插入和提取最小值。很少:删除节点。非常罕见:合并 在列出的条件下,下列哪个优先级队列在实际情况下更快 基于排序双链表的朴素实现 简单堆 左派堆 二项式堆 斐波那契堆 2-3堆 配对堆 薄堆 厚堆 斜二项堆 布罗达尔冈崎队列 根据我五年多前的工作经验,一般情况下,3堆的性能优于二进制堆。跳过列表堆和配对堆的性能略优于3堆,但内存成本较高。上述三项指标的表现均优于斐波那契 Brodal队列理论上是最有效的。但是,正如布罗达尔本人所说,它们“相当复杂”,“在实

最常用的操作:FindMin。不太常见:插入和提取最小值。很少:删除节点。非常罕见:合并

在列出的条件下,下列哪个优先级队列在实际情况下更快

  • 基于排序双链表的朴素实现
  • 简单堆
  • 左派堆
  • 二项式堆
  • 斐波那契堆
  • 2-3堆
  • 配对堆
  • 薄堆
  • 厚堆
  • 斜二项堆
  • 布罗达尔冈崎队列

根据我五年多前的工作经验,一般情况下,3堆的性能优于二进制堆。跳过列表堆和配对堆的性能略优于3堆,但内存成本较高。上述三项指标的表现均优于斐波那契

Brodal队列理论上是最有效的。但是,正如布罗达尔本人所说,它们“相当复杂”,“在实践中不适用”

很多人都在谈论斐波那契堆的效率,渐近分析认为它应该优于其他类型的堆。经验数据往往无法证明这一点。Fibonacci堆有一些明显的缺点,如中所述

如果您希望实现堆,我建议从二进制堆开始。或者3堆,这是一个简单的优化。如果需要更高的性能,我的下一步将是配对堆。它很容易实现,而且效率很高


除此之外,我没有任何建议。我在其他类型堆上看到的性能数据并没有显示出明显的赢家。

欢迎来到Stack Overflow,@iVeryBadGuy。对于此类问题,建议您在谷歌上快速搜索。你很可能会得到帮助你的资源。