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】:有长期存在的 rubygem rbtree 提供这种类型的功能。它是Red-Black Tree 的实现。
此外,还有一个纯 ruby 实现 rbtree-pure。
【讨论】:
以上是关于Ruby 的标准库中是不是有优先级队列数据结构实现?的主要内容,如果未能解决你的问题,请参考以下文章