1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.TinyQueue = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
- 'use strict';
- module.exports = TinyQueue;
- module.exports.default = TinyQueue;
- function TinyQueue(data, compare) {
- if (!(this instanceof TinyQueue)) return new TinyQueue(data, compare);
- this.data = data || [];
- this.length = this.data.length;
- this.compare = compare || defaultCompare;
- if (this.length > 0) {
- for (var i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);
- }
- }
- function defaultCompare(a, b) {
- return a < b ? -1 : a > b ? 1 : 0;
- }
- TinyQueue.prototype = {
- push: function (item) {
- this.data.push(item);
- this.length++;
- this._up(this.length - 1);
- },
- pop: function () {
- if (this.length === 0) return undefined;
- var top = this.data[0];
- this.length--;
- if (this.length > 0) {
- this.data[0] = this.data[this.length];
- this._down(0);
- }
- this.data.pop();
- return top;
- },
- peek: function () {
- return this.data[0];
- },
- _up: function (pos) {
- var data = this.data;
- var compare = this.compare;
- var item = data[pos];
- while (pos > 0) {
- var parent = (pos - 1) >> 1;
- var current = data[parent];
- if (compare(item, current) >= 0) break;
- data[pos] = current;
- pos = parent;
- }
- data[pos] = item;
- },
- _down: function (pos) {
- var data = this.data;
- var compare = this.compare;
- var halfLength = this.length >> 1;
- var item = data[pos];
- while (pos < halfLength) {
- var left = (pos << 1) + 1;
- var right = left + 1;
- var best = data[left];
- if (right < this.length && compare(data[right], best) < 0) {
- left = right;
- best = data[right];
- }
- if (compare(best, item) >= 0) break;
- data[pos] = best;
- pos = left;
- }
- data[pos] = item;
- }
- };
- },{}]},{},[1])(1)
- });
|