javascript implementation of a priority queue
npm install vanilla-priority-queueA javascript implementation of a priority queue backed by a binary heap.



- Installation
- Usage
- API
``npm i vanilla-priority-queue --save`
`
const { MinPriorityQueue, MaxPriorityQueue } = require('vanilla-priority-queue');
let minPriorityQueue = new MinPriorityQueue();
/*
The insert operation takes an item and it's priority.
The item argument can be anything.
The priority argument must be provided as an integer value.
*/
minPriorityQueue.insert(3, 3);
minPriorityQueue.insert(10, 10);
minPriorityQueue.peek() // returns 3
minPriorityQueue.remove() // returns 3
minPriorityQueue.remove() // returns 10
minPriorityQueue.isEmpty() // returns true
let maxPriorityQueue = new MaxPriorityQueue();
maxPriorityQueue.insert(3, 3);
maxPriorityQueue.insert(10, 10);
maxPriorityQueue.peek() // returns 10
maxPriorityQueue.remove() // returns 10
maxPriorityQueue.remove() // returns 3
maxPriorityQueue.isEmpty() // returns true
`
Both the `MaxPriorityQueue` and `MinPriorityQueue` expose the following functions:
* peek()
Returns the highest priority item in the queue in constant time. For a `MaxPriorityQueue` this is the max element. For a `MinPriorityQueue` this is the min element.
* insert(item, priority)
The insert operation takes an `item` and it's `priority` and inserts the following object into the queue:
` `
{
item: item,
priority: priority
}
The `item` argument can be anything.`
The priority` argument must be provided as an integer.
The operation completes in `O(lg n)` time.
* remove()
Removes the highest priority item in the queue in `O(lg n)` time. For a `MaxPriorityQueue` this is the max element. For a `MinPriorityQueue` this is the min element.
* isEmpty()
Returns a boolean value indicating whether the queue is empty or not.
* length()
Returns the length of the queue.
* getHeap()
Returns an array representation of the binary heap backing the priority queue. Note this contains a dummy `null` element at index `0``.