Ruby 的标准库中是不是有优先级队列数据结构实现?

Posted

技术标签:

【中文标题】Ruby 的标准库中是不是有优先级队列数据结构实现?【英文标题】:Is there priority queue data structure implementation in Ruby's standard library?Ruby 的标准库中是否有优先级队列数据结构实现? 【发布时间】:2010-11-17 12:18:23 【问题描述】:

Ruby 的标准库有优先队列实现吗?

【问题讨论】:

检查github.com/rubyworks/pqueue 如果您已经解决了您的问题,您应该在下面发布您的答案(您可以在 48 小时后接受)。您应该简单地使用解决方案编辑您的问题。 只是好奇为什么这不是 Ruby 中的标准库? 【参考方案1】:

不,但是there's one 在Kanwei Li's Algorithms and Containers GSoC 2008 project 中。

【讨论】:

这个还能用吗?当我尝试要求“算法”时,我得到无法加载“算法”。我需要下载包并将其放在我的项目文件夹中吗...? @TheJKFever 你必须gem install algorithms:rubygems.org/gems/algorithms 如果它像同一个存储库中的最小和最大堆一样臃肿、缓慢且记录不充分,那么我建议你不要使用它。【参考方案2】:

还有https://rubygems.org/gems/PriorityQueue,尽管它从 2005 年开始没有变化,但它仍然适用于 1.9。

根据我的尝试,它运行良好,有一个基准,并且有据可查。对于算法的 PriorityQueue 和 Heap(这似乎不允许轻易更改给定值的键),我可能不会这么说。

【讨论】:

【参考方案3】:

刚刚发布了一个实现优先级队列的 ruby​​ 扩展(在 C++ 中),它比基于 ruby​​ 的实现快几个数量级。见https://rubygems.org/gems/priority_queue_cxx。

【讨论】:

【参考方案4】:

如果您有兴趣,RubyGems 中有一个skewheap 实现。

【讨论】:

【参考方案5】:

有长期存在的 ruby​​gem rbtree 提供这种类型的功能。它是Red-Black Tree 的实现。

此外,还有一个纯 ruby​​ 实现 rbtree-pure。

【讨论】:

以上是关于Ruby 的标准库中是不是有优先级队列数据结构实现?的主要内容,如果未能解决你的问题,请参考以下文章

堆和优先级队列2:java实现堆和优先级队列

将 Java PriorityQueue 更改为 Max PQ [重复]

多线程四大经典案例

如何在 C5 库中使用 IPriorityQueue

堆(Heap)和有优先队列(Priority Queue)

优先级队列priority_queue