A javascript implementation of a priority queue. The queue is backed by a binary heap and provides O(lg n)
insert/remove operations and O(1)
retrieval of the highest priority item. Depending on if a MaxPriorityQueue
or a MinPriorityQueue
is initialized, the highest priority item can be the maximum or minimum.
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 O(1)
time. For a MaxPriorityQueue
this is the max item. For a MinPriorityQueue
this is the min item.
- 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 item. For a MinPriorityQueue
this is the min item.
- 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 that this contains a dummy null
element at index 0
.