BinaryHeap
Binary Heap Data Structure using an array implementation
Example
Import via NPM
var BinaryHeap = ;
|| Single element
var ch = ;ch;ch;// You can also chain inserts :)ch;// Removes the largest element firstch; // 'T'// You can also peak before you removech; // 'S'ch; // 'S'
|| Object
// Use the 'comparable' property to choose what you need to compare ahead of time// In our example we want to compare the agevar list = { return elmage; } ;list;list;list;list; list; // { name: 'Aisha', age: 33 }listsize; // 3list; // { name: 'John', age: 25 }
|| Priority Queue
Create a maximum or minimum priority queue on the fly
// Choose the order of the binaryheap ascending, or descendingvar maximumPQ = order:'asc' ;var minimumPQ = order:'dec' ;
API
Method | Returns Type | Description |
---|---|---|
size | number |
The size of the heap |
insert | object |
Adds an element to the heap |
remove | object |
Removes the root element (could be the max or min based on the configuration setting) |
undefined |
Prints the tree structure of the binary heap | |
peak | object |
Peak on the root element, or the element that will get remove first |
Setting
Object | Type | Description |
---|---|---|
order | string |
The order of the BinaryHeap either 'ascending' or 'descending' |
comparable | function |
Choose what you need to compare, default to the inserted value see object example |
data | array |
Pass in the data as an array ahead of time and we will handle the insertion for you |
O(n)
Type | Worst | Average |
---|---|---|
insert | O(log n) | O(log n) |
remove | O(log n) | O(log n) |
peak | O(1) | O(1) |
Graph
This graph is a representation of the algorithm used in this module
*-( (2 * i) + 1 )-˅
*-( 2 * i )-˅ ˅
[ 'ø', 'T', 'S', 'R', 'P', 'N', 'O', 'A', ...]
Empty *------^ ^
(2 * i) ^
*------------^
(2 * i) + 1
Reach out
Feel free to reach out with feedback via github: issue
, feature
, bug
, or enhancement
inputs are greatly appreciated
© MIT