Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

max-heap-typed

zrwusa327MIT2.0.4TypeScript support: included

Max Heap

Max Heap, max heap, maxheap, max-heap, heap, Binary Heap, binary-heap, heap data structure, max heap data structure, max heap, complete binary tree, heapify, heap sort, heapify up, heapify down, Priority Queue, priority queue, priorityqueue, priority-queue, priority q, priorityQ, max, efficient, priority, complete binary, extract max, max priority queue, efficient priority, ordering property, dynamic resizing, priority-based, priority-based processing, sorting, element priority, queue priority, insertion, deletion, javascript, java script, JavaScript, js, typescript, type script, TypeScript, ts, sorted, sort, data, structure, structures, data structure, datastructure, data-structure, data structures, datastructures, data-structures, in data structures, in data structure, DataStructure, DataStructures, parent, child, root, decrease key, increase key, traversal, recursive, iterative, Node.js, CommonJS, ES6, UMD, esmodule, java.util, c++ stl, c++ std, Python collections, System.Collections.Generic, STL, stl, util, collection, Collection, collections, Collections, searching, performance, OOP, documentation, visualization

readme

NPM GitHub top language npm eslint npm bundle size npm bundle size npm

What

Brief

This is a standalone Max Heap data structure from the data-structure-typed collection. If you wish to access more data structures or advanced features, you can transition to directly installing the complete data-structure-typed package

How

install

npm

npm i max-heap-typed --save

yarn

yarn add max-heap-typed

snippet

TS

    import {MaxHeap} from 'data-structure-typed';
    // /* or if you prefer */ import {MaxHeap} from 'heap-typed';

    const maxHeap = new MaxHeap<{ keyA: string }>();
    const myObj1 = {keyA: 'a1'}, myObj6 = {keyA: 'a6'}, myObj5 = {keyA: 'a5'}, myObj2 = {keyA: 'a2'},
        myObj0 = {keyA: 'a0'}, myObj9 = {keyA: 'a9'};
    maxHeap.add(1, myObj1);
    maxHeap.has(myObj1)  // true
    maxHeap.has(myObj9)  // false
    maxHeap.add(6, myObj6);
    maxHeap.has(myObj6)  // true
    maxHeap.add(5, myObj5);
    maxHeap.has(myObj5)  // true
    maxHeap.add(2, myObj2);
    maxHeap.has(myObj2)  // true
    maxHeap.has(myObj6)  // true
    maxHeap.add(0, myObj0);
    maxHeap.has(myObj0)  // true
    maxHeap.has(myObj9)  // false
    maxHeap.add(9, myObj9);
    maxHeap.has(myObj9)  // true

    const peek9 = maxHeap.peek(true);
    peek9 && peek9.val && peek9.val.keyA  // 'a9'

    const heapToArr = maxHeap.toArray(true);
    heapToArr.map(item => item?.val?.keyA)  // ['a9', 'a2', 'a6', 'a1', 'a0', 'a5']

    const values = ['a9', 'a6', 'a5', 'a2', 'a1', 'a0'];
    let i = 0;
    while (maxHeap.size > 0) {
        const polled = maxHeap.poll(true);
        polled && polled.val && polled.val.keyA  // values[i]
        i++;
    }

JS

    const {MaxHeap} = require('data-structure-typed');
    // /* or if you prefer */ const {MaxHeap} = require('heap-typed');

    const maxHeap = new MaxHeap();
    const myObj1 = {keyA: 'a1'}, myObj6 = {keyA: 'a6'}, myObj5 = {keyA: 'a5'}, myObj2 = {keyA: 'a2'},
        myObj0 = {keyA: 'a0'}, myObj9 = {keyA: 'a9'};
    maxHeap.add(1, myObj1);
    maxHeap.has(myObj1)  // true
    maxHeap.has(myObj9)  // false
    maxHeap.add(6, myObj6);
    maxHeap.has(myObj6)  // true
    maxHeap.add(5, myObj5);
    maxHeap.has(myObj5)  // true
    maxHeap.add(2, myObj2);
    maxHeap.has(myObj2)  // true
    maxHeap.has(myObj6)  // true
    maxHeap.add(0, myObj0);
    maxHeap.has(myObj0)  // true
    maxHeap.has(myObj9)  // false
    maxHeap.add(9, myObj9);
    maxHeap.has(myObj9)  // true

    const peek9 = maxHeap.peek(true);
    peek9 && peek9.val && peek9.val.keyA  // 'a9'

    const heapToArr = maxHeap.toArray(true);
    heapToArr.map(item => item?.val?.keyA)  // ['a9', 'a2', 'a6', 'a1', 'a0', 'a5']

    const values = ['a9', 'a6', 'a5', 'a2', 'a1', 'a0'];
    let i = 0;
    while (maxHeap.size > 0) {
        const polled = maxHeap.poll(true);
        polled && polled.val && polled.val.keyA  // values[i]
        i++;
    }

API docs & Examples

API Docs

Live Examples

Examples Repository

Data Structures

Data Structure Unit Test Performance Test API Docs
Heap Heap

Standard library data structure comparison

Data Structure Typed C++ STL java.util Python collections
Heap<E> priority_queue<T> PriorityQueue<E> heapq

Benchmark

heap
test nametime taken (ms)executions per secsample deviation
10,000 add & pop5.80172.358.78e-5
10,000 fib add & pop357.922.790.00

Built-in classic algorithms

Algorithm Function Description Iteration Type

Software Engineering Design Standards

Principle Description
Practicality Follows ES6 and ESNext standards, offering unified and considerate optional parameters, and simplifies method names.
Extensibility Adheres to OOP (Object-Oriented Programming) principles, allowing inheritance for all data structures.
Modularization Includes data structure modularization and independent NPM packages.
Efficiency All methods provide time and space complexity, comparable to native JS performance.
Maintainability Follows open-source community development standards, complete documentation, continuous integration, and adheres to TDD (Test-Driven Development) patterns.
Testability Automated and customized unit testing, performance testing, and integration testing.
Portability Plans for porting to Java, Python, and C++, currently achieved to 80%.
Reusability Fully decoupled, minimized side effects, and adheres to OOP.
Security Carefully designed security for member variables and methods. Read-write separation. Data structure software does not need to consider other security aspects.
Scalability Data structure software does not involve load issues.