| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- "use strict";
- Object.defineProperty(exports, "t", {
- value: true
- });
- exports.default = void 0;
- var _ContainerBase = require("../ContainerBase");
- class PriorityQueue extends _ContainerBase.Base {
- constructor(t = [], s = function(t, s) {
- if (t > s) return -1;
- if (t < s) return 1;
- return 0;
- }, i = true) {
- super();
- this.v = s;
- if (Array.isArray(t)) {
- this.C = i ? [ ...t ] : t;
- } else {
- this.C = [];
- const s = this;
- t.forEach((function(t) {
- s.C.push(t);
- }));
- }
- this.i = this.C.length;
- const e = this.i >> 1;
- for (let t = this.i - 1 >> 1; t >= 0; --t) {
- this.k(t, e);
- }
- }
- m(t) {
- const s = this.C[t];
- while (t > 0) {
- const i = t - 1 >> 1;
- const e = this.C[i];
- if (this.v(e, s) <= 0) break;
- this.C[t] = e;
- t = i;
- }
- this.C[t] = s;
- }
- k(t, s) {
- const i = this.C[t];
- while (t < s) {
- let s = t << 1 | 1;
- const e = s + 1;
- let h = this.C[s];
- if (e < this.i && this.v(h, this.C[e]) > 0) {
- s = e;
- h = this.C[e];
- }
- if (this.v(h, i) >= 0) break;
- this.C[t] = h;
- t = s;
- }
- this.C[t] = i;
- }
- clear() {
- this.i = 0;
- this.C.length = 0;
- }
- push(t) {
- this.C.push(t);
- this.m(this.i);
- this.i += 1;
- }
- pop() {
- if (this.i === 0) return;
- const t = this.C[0];
- const s = this.C.pop();
- this.i -= 1;
- if (this.i) {
- this.C[0] = s;
- this.k(0, this.i >> 1);
- }
- return t;
- }
- top() {
- return this.C[0];
- }
- find(t) {
- return this.C.indexOf(t) >= 0;
- }
- remove(t) {
- const s = this.C.indexOf(t);
- if (s < 0) return false;
- if (s === 0) {
- this.pop();
- } else if (s === this.i - 1) {
- this.C.pop();
- this.i -= 1;
- } else {
- this.C.splice(s, 1, this.C.pop());
- this.i -= 1;
- this.m(s);
- this.k(s, this.i >> 1);
- }
- return true;
- }
- updateItem(t) {
- const s = this.C.indexOf(t);
- if (s < 0) return false;
- this.m(s);
- this.k(s, this.i >> 1);
- return true;
- }
- toArray() {
- return [ ...this.C ];
- }
- }
- var _default = PriorityQueue;
- exports.default = _default;
- //# sourceMappingURL=PriorityQueue.js.map
|