max-heap-typed
v2.6.0
Published
Max Heap
Maintainers
Keywords
Readme
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 --saveyarn
yarn add max-heap-typedsnippet
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++;
}Find the K largest elements
const data = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
const heap = new MaxHeap(data);
// Extract top 3 elements
const top3 = [];
for (let i = 0; i < 3; i++) {
top3.push(heap.poll());
}
console.log(top3); // [9, 6, 5];Priority-based task processing
interface Task {
name: string;
priority: number;
}
const heap = new MaxHeap<Task>([], {
comparator: (a, b) => b.priority - a.priority
});
heap.add({ name: 'Low priority', priority: 1 });
heap.add({ name: 'Critical fix', priority: 10 });
heap.add({ name: 'Medium task', priority: 5 });
// Highest priority first
console.log(heap.poll()?.name); // 'Critical fix';
console.log(heap.poll()?.name); // 'Medium task';
console.log(heap.poll()?.name); // 'Low priority';Real-time top score tracking
const scores = new MaxHeap<number>();
// Stream of scores coming in
for (const score of [72, 85, 91, 68, 95, 78, 88]) {
scores.add(score);
}
// Current highest score without removing
console.log(scores.peek()); // 95;
console.log(scores.size); // 7;
// Remove top 2 scores
console.log(scores.poll()); // 95;
console.log(scores.poll()); // 91;
console.log(scores.peek()); // 88;API docs & Examples
Examples Repository
