UNPKG

@figliolia/data-structures

Version:

Efficient data structures for every day programming

38 lines (37 loc) 1.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MaxHeap = void 0; const Heap_1 = require("./Heap"); /** * Max Heap * * A heap that remains sorted descendingly * * ```typescript * import { MaxHeap } from "@figliolia/data-structures"; * * const heap = new MaxHeap<number>(value => value); * heap.push(3); * heap.push(2); * heap.push(1); * heap.pop() // 3 * * const complexDataHeap = new MaxHeap<{ id: number, name: string }>(value => value.id); * complexDataHeap.push({ id: 3, name: "Jeff" }); * complexDataHeap.push({ id: 2, name: "Steve" }); * complexDataHeap.push({ id: 1, name: "Dave" }); * complexDataHeap.pop() // { id: 3, name: "Jeff" } * ``` */ class MaxHeap extends Heap_1.Heap { nextChild(left, right) { return right < this.length && this.extract(this.storage[right]) > this.extract(this.storage[left]) ? right : left; } comparer(index1, index2) { return (this.extract(this.storage[index1]) <= this.extract(this.storage[index2])); } } exports.MaxHeap = MaxHeap;