51 lines
1.1 KiB
Markdown
51 lines
1.1 KiB
Markdown
|
## tinyqueue
|
||
|
|
||
|
The smallest and simplest binary heap priority queue in JavaScript.
|
||
|
|
||
|
```js
|
||
|
// create an empty priority queue
|
||
|
var queue = new TinyQueue();
|
||
|
|
||
|
// add some items
|
||
|
queue.push(7);
|
||
|
queue.push(5);
|
||
|
queue.push(10);
|
||
|
|
||
|
// remove the top item
|
||
|
var top = queue.pop(); // returns 5
|
||
|
|
||
|
// return the top item (without removal)
|
||
|
top = queue.peek(); // returns 7
|
||
|
|
||
|
// get queue length
|
||
|
queue.length; // returns 2
|
||
|
|
||
|
// create a priority queue from an existing array (modifies the array)
|
||
|
queue = new TinyQueue([7, 5, 10]);
|
||
|
|
||
|
// pass a custom item comparator as a second argument
|
||
|
queue = new TinyQueue([{value: 5}, {value: 7}], function (a, b) {
|
||
|
return a.value - b.value;
|
||
|
});
|
||
|
|
||
|
// turn a queue into a sorted array
|
||
|
var array = [];
|
||
|
while (queue.length) array.push(queue.pop());
|
||
|
```
|
||
|
|
||
|
Install as an NPM module:
|
||
|
|
||
|
```bash
|
||
|
$ npm install tinyqueue
|
||
|
```
|
||
|
|
||
|
Make a browser build using Browserify:
|
||
|
|
||
|
```bash
|
||
|
$ npm install -g browserify
|
||
|
$ browserify index.js -s TinyQueue > tinyqueue.js
|
||
|
```
|
||
|
|
||
|
Inspired by [js-priority-queue](https://github.com/adamhooper/js-priority-queue)
|
||
|
by [Adam Hooper](https://github.com/adamhooper).
|