Skip to content

sysread/lua-skewheap

Repository files navigation

skewheap

skewheap is a lua library providing a self-adjusting heap. A skew heap is notable for its ability to be quickly merged with another skew heap.

See wikipedia for details.

Usage

require 'skewheap'

a = SkewHeap.new()
a:put(10, 30, 5, 3)
a:take() --  5
a:take() -- 10
a:take() -- 30

b = SkewHeap.new()
b:put(45, 22)

c = a:merge(b) -- c: [3, 22, 45]
               -- a: [3]
               -- b: [22, 45]

Installation

SOON

Methods

new

Returns a new, empty skew heap.

items

Returns the number of items in the heap.

is_empty

Returns true if the heap has no items in it.

put(...)

Adds a variable number of items to the heap. Returns the number of items in the heap after insertion.

take(count)

Removes and returns count items from the heap.

peek

Returns the next item in the heap without removing it.

merge

Combines two heaps into a new heap containing all of the items in the other heaps. The source heaps are not modified in any way.

Author

Jeff Ober [email protected]

License

MIT