moonbitstack/moonstl/heap does not have a README file
test {
let heap : @heap.DaryHeap[Int32] = try! @heap.DaryHeap::new()
heap.push(3)
heap.push(1)
heap.push(2)
assert_true(heap.peek() == Some(1))
assert_true(heap.pop() == Some(1))
assert_true(heap.length() == 2)
}test {
let heap : @heap.DaryHeap[Int32] = try! @heap.DaryHeap::from_array([
5, 1, 4, 1, 3,
])
assert_true(heap.into_sorted_array() == [1, 1, 3, 4, 5])
}test {
let heap : @heap.DaryHeap[Int32] = try! @heap.DaryHeap::from_array([3, 1, 2])
assert_true(heap.into_sorted_array() == [1, 2, 3])
assert_true(heap.is_empty())
}test {
let heap : @heap.DaryHeap[Int32] = try! @heap.DaryHeap::new()
heap.push(2)
heap.push(1)
assert_true(heap.peek() == Some(1))
}test {
let heap : @heap.FibonacciHeap[Int32] = @heap.FibonacciHeap::new()
let a = heap.insert(5)
let _ = heap.insert(2)
let _ = heap.insert(8)
assert_true(heap.peek() == Some(2))
assert_true(heap.decrease_key(a, 1))
assert_true(heap.pop() == Some(1))
}pub(all) struct HeapKey[T] {
index : Int
generation : UInt
}test {
let heap : @heap.IndexHeap[Int32] = @heap.IndexHeap::new()
let a = heap.insert(5)
let b = heap.insert(1)
assert_true(heap.update(a, 0))
assert_true(heap.peek() == Some(0))
assert_true(heap.remove_at(b) == Some(1))
assert_true(heap.length() == 1)
}test {
let heap : @heap.MinMaxHeap[Int32] = @heap.MinMaxHeap::new()
for value in [5, 1, 9, 3, 7] {
heap.push(value)
}
assert_true(heap.peek_min() == Some(1))
assert_true(heap.peek_max() == Some(9))
assert_true(heap.pop_min() == Some(1))
assert_true(heap.pop_max() == Some(9))
}test {
let heap : @heap.PairingHeap[Int32] = @heap.PairingHeap::new()
let a = heap.insert(5)
let b = heap.insert(2)
let _ = heap.insert(9)
assert_true(heap.peek() == Some(2))
assert_true(heap.update(a, 1))
assert_true(heap.peek() == Some(1))
assert_true(heap.remove_at(b) == Some(2))
assert_true(heap.pop() == Some(1))
}test {
let heap : @heap.RadixHeap[String] = @heap.RadixHeap::new()
heap.push(5UL, "five")
heap.push(1UL, "one")
heap.push(9UL, "nine")
assert_true(heap.pop_min() == Some((1UL, "one")))
assert_true(heap.pop_min() == Some((5UL, "five")))
}Install
Download zipData structures and algorithms the MoonBit core library leaves out.