11 releases
0.1.12 | Feb 18, 2024 |
---|---|
0.1.11 |
|
#31 in #priority-queue
10KB
236 lines
csheap
Min and max heap implementation over a vector. This is a efficient implementation of the ADT priority queue.
// Create a new heap instance for u32 elements.
let mut heap = Heap::<u32>::new(HeapType::Max);
// Create a new heap instance from an u32 vector.
// Will take the ownership of the vector.
let mut heap = Heap::<u32>::from_vec(HeapType::Min, some_vector);
// To avoid taking the ownership of the vector you can,
// for example, clone the vector.
let mut heap = Heap::<u32>::from_vec(HeapType::Min, some_vector.clone());
There are two basic operations:
insert
: Insert an element.extract
: Remove and return the element in the root node.
Heaps comes in two flavors: Min
and Max
.
Min
:extract
always take the min element.Max
:extract
always take the max element.
// Create a heap that always return the max element
let mut heap = Heap::<u32>::new(HeapType::Max);
heap.insert(1u32);
heap.insert(2u32);
heap.extract(); // returns 2