All Bundles

Heap<H:Compare>

Generic binary heap

Operations

Code example:

heap := Collection.Heap->New(Collection.Heap->Order->MIN)<IntRef>;
heap->Insert(IntRef->New(3));
heap->Insert(IntRef->New(1));
heap->Insert(IntRef->New(9));
heap->Insert(IntRef->New(8));
heap->Insert(IntRef->New(6));
heap->Insert(IntRef->New(2));

heap->Pop()->As(IntRef)->PrintLine();
heap->Pop()->As(IntRef)->PrintLine();
"---"->PrintLine();

values := heap->ToArray();
each(ref := values) {
  value := ref->As(IntRef);
  value->Get()->PrintLine();
};
"---"->PrintLine();

heap->Size()->PrintLine();

New

Constructor

New(array:H[], order:Heap->Order)
Parameters
NameTypeDescription
arrayHarray of values to insert
orderHeap->Ordersort order

Constructor

New(order:Heap->Order)
Parameters
NameTypeDescription
orderHeap->Ordersort order

Capacity

Returns the heap capacity

method : public : Capacity() ~ Int
Return
TypeDescription
Intheap capacity

Insert

Inserts a value into the heap and extends the heap size if necessary

method : public : Insert(value:H) ~ Nil
Parameters
NameTypeDescription
valueHvalue to insert

IsEmpty

Checks to see if the heap is empty

method : public : IsEmpty() ~ Bool
Return
TypeDescription
Booltrue if empty, false otherwise

Pop

Pop either the smallest or largest value depending upon the sort order

method : public : Pop() ~ H
Return
TypeDescription
Hsmallest or largest value

Searches and pops the given value

method : public : Pop(value:H) ~ Bool
Parameters
NameTypeDescription
valueHvalue to remove

Return
TypeDescription
Booltrue if successful, false otherwise

Size

Size of heap, including Nil values

method : public : Size() ~ Int
Return
TypeDescription
Intsize of heap

ToArray

Returns a list of non-Nil values

method : public : ToArray() ~ H[]
Return
TypeDescription
Hlist of values

ToString

Formats the collection into a string. If an element implements the 'Stringify' interface, it's 'ToString()' is called.

method : public : ToString() ~ String
Return
TypeDescription
Stringstring representation

Top

Check the top of the stack

method : public : Top() ~ H
Return
TypeDescription
Hvalue on the top of stack, Nil if stack is empty