我需要Ruby中的数据结构,它可以在添加或删除元素时对其元素进行排序,并允许(至少)从列表中弹出第一个元素.
我在ruby文档中找到的最接近的东西是SortedSet.但是,这似乎没有提供任何方式来通过索引访问元素(甚至关闭第一个元素)
这些是我需要的具体操作:
ruby有没有内置的东西,或者是否有任何我能抓到的图书馆可以给我?我可以毫不费力地实现一个,但如果可能的话,我宁愿使用预先存在的一个.
目前我正在使用Ruby 1.8,虽然切换到1.9可能没问题.
编辑:
由于似乎存在一些混淆,我需要的排序不是插入对象的顺序.我需要根据<=>运营商进行排序.通常我会弹出第一个元素,处理它(可能生成新元素),向列表中添加新元素,然后重复.添加的元素最终可能会在排序顺序中的任何位置结束,而不仅仅是在最后.
可能希望为执行此操作的红黑树(Ruby / RBTree)分配此1.8兼容的gem:
http://www.geocities.co.jp/SiliconValley-PaloAlto/3388/rbtree/README.html
树始终保持平衡,对树的操作为O(log N)
这里还有一个红黑树实现:
http://github.com/kanwei/algorithms
容器:: RubyRBTreeMap