Ruby的标准库有优先级队列实现吗?
olqngx591#
不,但there's one在Kanwei Li's Algorithms and Containers GSoC 2008 project中。
6ie5vjzr2#
刚刚发布了一个ruby扩展(用C++)实现优先级队列,它比基于ruby的实现快了一个数量级。参见https://rubygems.org/gems/priority_queue_cxx。
fdbelqdn3#
还有https://rubygems.org/gems/PriorityQueue,它仍然工作在1.9,尽管它从2005年起就没有改变。从我的尝试来看,它工作得很好,有一个基准测试,并且有很好的文档记录。我可能不会说算法的PriorityQueue和Heap(它似乎不允许轻松更改给定值的键)。
xbp102n04#
如果你感兴趣的话,RubyGems中有一个skewheap实现。
vh0rcniy5#
有一个长期存在的rubygem rbtree提供了这种类型的功能。它是Red-Black Tree的一个实现。此外,还有一个纯ruby实现rbtree-pure。
5条答案
按热度按时间olqngx591#
不,但there's one在Kanwei Li's Algorithms and Containers GSoC 2008 project中。
6ie5vjzr2#
刚刚发布了一个ruby扩展(用C++)实现优先级队列,它比基于ruby的实现快了一个数量级。参见https://rubygems.org/gems/priority_queue_cxx。
fdbelqdn3#
还有https://rubygems.org/gems/PriorityQueue,它仍然工作在1.9,尽管它从2005年起就没有改变。
从我的尝试来看,它工作得很好,有一个基准测试,并且有很好的文档记录。我可能不会说算法的PriorityQueue和Heap(它似乎不允许轻松更改给定值的键)。
xbp102n04#
如果你感兴趣的话,RubyGems中有一个skewheap实现。
vh0rcniy5#
有一个长期存在的rubygem rbtree提供了这种类型的功能。它是Red-Black Tree的一个实现。
此外,还有一个纯ruby实现rbtree-pure。