As I recently said, I'd like some more advanced datastructures in
ruby. So I wrote a nice priority queue extension. Maybe it's not so
nice c-code right now, because it is my first try on an extension, but
it works really good. I created quite a quick quiz solver with it
As I have a problem with my webspace at the moment, this first release
is mailing list only. The extension is not packaged for installation
but it is easy to build and use.
It's late here and I'm talking weird stuff, so I'll just paste the
readme and append the library.
Have fun,
Brian
priority_queue.tar.bz (7.46 KB)
priority_queue.tar.gz (9.38 KB)
路路路
--------------------------------------------------
# Ruby extension implementing a priority queue
## Description
This is a fibonacy heap priority queue implementation. That means
insert: O(1)
decrease_priority: Amortized O(1)
delete_min: Amortized O(log n)
## Legal stuff
(c) 2005 Brian Schr枚der
Please submit bugreports to priority_queue@brian-schroeder.de
This extension is under the same license as ruby.
Do not hold me reliable for anything that happens to you, your programs or
anything else because of this extension. It worked for me, but there is no
guarantee it will work for you.
## Installation
ruby extconf\.rb
make
put priority_queue.so somewhere where your program can find it. E.g.
/usr/local/lib/ruby/1.8/priority_queue.so
## Usage
require 'priority_queue'
q = PriorityQueue.new
q.push "node1", 0
q.puts "node2", 1
q.min #=> "node1"
q.decrease_priority("node2", -1)
q.pop_min #=> "node2"
q.min #=> "node1"
--------------------------------------------------
--
http://ruby.brian-schroeder.de/
Stringed instrument chords: http://chordlist.brian-schroeder.de/