JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 207672
  • Score
    100M100P100Q187485F
  • License MIT

priority queue implementation in javascript using a Min Heap

Package Exports

  • @datastructures-js/priority-queue

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@datastructures-js/priority-queue) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@datastructures-js/priority-queue

build:? npm npm npm

A highly performant priority queue implementation using a Min Heap data structure.

Table of Contents

Install

npm install --save @datastructures-js/priority-queue

API

require

const PriorityQueue = require('@datastructures-js/priority-queue');

import

import PriorityQueue from '@datastructures-js/priority-queue';

Construction

const priorityQueue = new PriorityQueue();

.enqueue(element, priority)

adds an element with a priority (number) to the queue. The smaller the number, the higher the priority.

params
nametype
elementobject
prioritynumber
runtime
O(log(n))

Example

priorityQueue.enqueue('patient y', 1); // highest priority
priorityQueue.enqueue('patient z', 3);
priorityQueue.enqueue('patient w', 4); // lowest priority
priorityQueue.enqueue('patient x', 2);

.front()

returns the element with highest priority in the queue.

returndescription
object object literal with "priority" and "element" props
runtime
O(1)

Example

console.log(priorityQueue.front()); // { priority: 1, element: 'patient y' }

.back()

returns an element with lowest priority in the queue. If multiple elements exist at the lowest priority, the one that was inserted first will be returned.

returndescription
object object literal with "priority" and "element" props
runtime
O(1)

Example

priorityQueue.enqueue('patient m', 4); // lowest priority
priorityQueue.enqueue('patient c', 4); // lowest priority
console.log(priorityQueue.back()); // { priority: 4, element: 'patient w' }

.dequeue()

removes and returns the element with highest priority in the queue.

returndescription
object object literal with "priority" and "element" props
runtime
O(log(n))

Example

console.log(priorityQueue.dequeue()); // { priority: 1, element: 'patient y' }
console.log(priorityQueue.front()); // { priority: 2, element: 'patient x' }

.isEmpty()

checks if the queue is empty.

return
boolean
runtime
O(1)

Example

console.log(priorityQueue.isEmpty()); // false

.size()

returns the number of elements in the queue.

return
number
runtime
O(1)

Example

console.log(priorityQueue.size()); // 5

.toArray()

returns a sorted array of elements by their priorities from highest to lowest.

returndescription
arrayan array of object literals with "priority" & "element" props
runtime
O(n*log(n))

Example

console.log(priorityQueue.toArray());
/*
[
  { priority: 2, element: 'patient x' },
  { priority: 3, element: 'patient z' },
  { priority: 4, element: 'patient c' },
  { priority: 4, element: 'patient w' },
  { priority: 4, element: 'patient m' }
]
*/

.clear()

clears all elements in the queue.

runtime
O(1)

Example

priorityQueue.clear();
console.log(priorityQueue.size()); // 0
console.log(priorityQueue.front()); // null
console.log(priorityQueue.dequeue()); // null

Build

grunt build

License

The MIT License. Full License is here