Skip to main content

MaxPriorityQueue

data-structure-typed


data-structure-typed / MaxPriorityQueue

Class: MaxPriorityQueue<E, R>

Defined in: data-structures/priority-queue/max-priority-queue.ts:77

Max-oriented priority queue (max-heap) built on PriorityQueue. The default comparator orders primitive values in descending order. If you store objects, you must provide a custom comparator via PriorityQueueOptions.

Examples

// Job scheduling by priority
const jobs = new MaxPriorityQueue<number>();

jobs.add(3); // low priority
jobs.add(7); // high priority
jobs.add(5); // medium priority
jobs.add(10); // critical

// Highest priority job first
console.log(jobs.poll()); // 10;
console.log(jobs.poll()); // 7;
console.log(jobs.poll()); // 5;
console.log(jobs.poll()); // 3;
// Auction system with highest bid tracking
interface Bid {
bidder: string;
amount: number;
}

const auction = new MaxPriorityQueue<Bid>([], {
comparator: (a, b) => b.amount - a.amount
});

auction.add({ bidder: 'Alice', amount: 100 });
auction.add({ bidder: 'Bob', amount: 250 });
auction.add({ bidder: 'Charlie', amount: 175 });

// Current highest bid
console.log(auction.peek()?.bidder); // 'Bob';
console.log(auction.peek()?.amount); // 250;

// Process winning bid
const winner = auction.poll()!;
console.log(winner.bidder); // 'Bob';
console.log(auction.peek()?.bidder); // 'Charlie';
// CPU process scheduling
const cpuQueue = new MaxPriorityQueue<[number, string]>([], {
comparator: (a, b) => b[0] - a[0]
});

cpuQueue.add([5, 'System process']);
cpuQueue.add([1, 'Background task']);
cpuQueue.add([8, 'User interaction']);
cpuQueue.add([3, 'Network sync']);

const order = [];
while (cpuQueue.size > 0) {
order.push(cpuQueue.poll()![1]);
}
console.log(order); // [
// 'User interaction',
// 'System process',
// 'Network sync',
// 'Background task'
// ];

Extends

Type Parameters

E

E = any

Element type stored in the queue.

R

R = any

Extra record/metadata associated with each element.

Constructors

Constructor

new MaxPriorityQueue<E, R>(elements?, options?): MaxPriorityQueue<E, R>;

Defined in: data-structures/priority-queue/max-priority-queue.ts:85

Creates a max-priority queue.

Parameters

elements?

Iterable<E, any, any> | Iterable<R, any, any>

Optional initial elements to insert.

options?

PriorityQueueOptions<E, R>

Optional configuration (e.g., comparator, toElementFn).

Returns

MaxPriorityQueue<E, R>

Throws

Thrown when using the default comparator with object elements (provide a custom comparator).

Remarks

Complexity — Time: O(n log n) when inserting n elements incrementally; Space: O(n).

Overrides

PriorityQueue<E, R>.constructor

Properties

comparator

Get Signature

get comparator(): Comparator<E>;

Defined in: data-structures/heap/heap.ts:1170

Get the comparator used to order elements.

Remarks

Time O(1), Space O(1)

Returns

Comparator<E>

Comparator function.

Inherited from

PriorityQueue.comparator


elements

Get Signature

get elements(): E[];

Defined in: data-structures/heap/heap.ts:180

Get the backing array of the heap.

Remarks

Time O(1), Space O(1)

Returns

E[]

Internal elements array.

Inherited from

PriorityQueue.elements


leaf

Get Signature

get leaf(): E | undefined;

Defined in: data-structures/heap/heap.ts:243

Get the last leaf element.

Remarks

Time O(1), Space O(1)

Returns

E | undefined

Last element or undefined.

Inherited from

PriorityQueue.leaf


size

Get Signature

get size(): number;

Defined in: data-structures/heap/heap.ts:233

Get the number of elements.

Remarks

Time O(1), Space O(1)

Example
// Track heap capacity
const heap = new Heap<number>();
console.log(heap.size); // 0;
heap.add(10);
heap.add(20);
console.log(heap.size); // 2;
heap.poll();
console.log(heap.size); // 1;
Returns

number

Heap size.

Inherited from

PriorityQueue.size


toElementFn

Get Signature

get toElementFn(): ((rawElement) => E) | undefined;

Defined in: data-structures/base/iterable-element-base.ts:47

Exposes the current toElementFn, if configured.

Remarks

Time O(1), Space O(1).

Returns

((rawElement) => E) | undefined

The converter function or undefined when not set.

Inherited from

PriorityQueue.toElementFn

Methods

[iterator]()

iterator: IterableIterator<E>;

Defined in: data-structures/base/iterable-element-base.ts:60

Returns an iterator over the structure's elements.

Parameters

args

...unknown[]

Optional iterator arguments forwarded to the internal iterator.

Returns

IterableIterator<E>

An IterableIterator<E> that yields the elements in traversal order.

Remarks

Producing the iterator is O(1); consuming the entire iterator is Time O(n) with O(1) extra space.

Inherited from

PriorityQueue.[iterator]


add()

add(element): boolean;

Defined in: data-structures/heap/heap.ts:336

Insert an element.

Parameters

element

E

Element to insert.

Returns

boolean

True.

Remarks

Time O(1) amortized, Space O(1)

Example

// basic Heap creation and add operation
// Create a min heap (default)
const minHeap = new Heap([5, 3, 7, 1, 9, 2]);

// Verify size
console.log(minHeap.size); // 6;

// Add new element
minHeap.add(4);
console.log(minHeap.size); // 7;

// Min heap property: smallest element at root
const min = minHeap.peek();
console.log(min); // 1;

Inherited from

PriorityQueue.add


addMany()

addMany(elements): boolean[];

Defined in: data-structures/heap/heap.ts:385

Insert many elements from an iterable.

Parameters

elements

Iterable<E | R>

Iterable of elements or raw values.

Returns

boolean[]

Array of per-element success flags.

Remarks

Time O(N log N), Space O(1)

Example

// Add multiple elements
const heap = new Heap<number>([], { comparator: (a, b) => a - b });
heap.addMany([5, 3, 7, 1]);
console.log(heap.peek()); // 1;
console.log(heap.size); // 4;

Inherited from

PriorityQueue.addMany


clear()

clear(): void;

Defined in: data-structures/heap/heap.ts:669

Remove all elements.

Returns

void

void

Remarks

Time O(1), Space O(1)

Example

// Remove all elements
const heap = new Heap<number>([1, 2, 3], { comparator: (a, b) => a - b });
heap.clear();
console.log(heap.isEmpty()); // true;

Inherited from

PriorityQueue.clear


clone()

clone(): this;

Defined in: data-structures/heap/heap.ts:1008

Deep clone this heap.

Returns

this

A new heap with the same elements.

Remarks

Time O(N), Space O(N)

Example

// Create independent copy
const heap = new Heap<number>([3, 1, 4], { comparator: (a, b) => a - b });
const copy = heap.clone();
copy.poll();
console.log(heap.size); // 3;
console.log(copy.size); // 2;

Inherited from

PriorityQueue.clone


delete()

delete(element): boolean;

Defined in: data-structures/heap/heap.ts:770

Delete one occurrence of an element.

Parameters

element

E

Element to delete.

Returns

boolean

True if an element was removed.

Remarks

Time O(N), Space O(1)

Example

// Remove specific element
const heap = new Heap<number>([3, 1, 4, 1, 5], { comparator: (a, b) => a - b });
heap.delete(4);
console.log(heap.toArray().includes(4)); // false;

Inherited from

PriorityQueue.delete


deleteBy()

deleteBy(predicate): boolean;

Defined in: data-structures/heap/heap.ts:798

Delete the first element that matches a predicate.

Parameters

predicate

(element, index, heap) => boolean

Function (element, index, heap) → boolean.

Returns

boolean

True if an element was removed.

Remarks

Time O(N), Space O(1)

Inherited from

PriorityQueue.deleteBy


dfs()

dfs(order?): E[];

Defined in: data-structures/heap/heap.ts:868

Traverse the binary heap as a complete binary tree and collect elements.

Parameters

order?

DFSOrderPattern = 'PRE'

Traversal order: 'PRE' | 'IN' | 'POST'.

Returns

E[]

Array of visited elements.

Remarks

Time O(N), Space O(H)

Example

// Depth-first traversal
const heap = new Heap<number>([3, 1, 2], { comparator: (a, b) => a - b });
const result = heap.dfs('IN');
console.log(result.length); // 3;

Inherited from

PriorityQueue.dfs


every()

every(predicate, thisArg?): boolean;

Defined in: data-structures/base/iterable-element-base.ts:86

Tests whether all elements satisfy the predicate.

Parameters

predicate

ElementCallback<E, R, boolean>

Function invoked for each element with signature (value, index, self).

thisArg?

unknown

Optional this binding for the predicate.

Returns

boolean

true if every element passes; otherwise false.

Remarks

Time O(n) in the worst case; may exit early when the first failure is found. Space O(1).

Inherited from

PriorityQueue.every


filter()

filter(callback, thisArg?): this;

Defined in: data-structures/heap/heap.ts:1059

Filter elements into a new heap of the same class.

Parameters

callback

ElementCallback<E, R, boolean>

Predicate (element, index, heap) → boolean to keep element.

thisArg?

unknown

Value for this inside the callback.

Returns

this

A new heap with the kept elements.

Remarks

Time O(N log N), Space O(N)

Example

// Filter elements
const heap = new Heap<number>([1, 2, 3, 4, 5], { comparator: (a, b) => a - b });
const evens = heap.filter(x => x % 2 === 0);
console.log(evens.size); // 2;

Inherited from

PriorityQueue.filter


find()

Call Signature

find<S>(predicate, thisArg?): S | undefined;

Defined in: data-structures/base/iterable-element-base.ts:162

Finds the first element that satisfies the predicate and returns it.

Finds the first element of type S (a subtype of E) that satisfies the predicate and returns it.

Type Parameters
S

S

Parameters
predicate

ElementCallback<E, R, S>

Type-guard predicate: (value, index, self) => value is S.

thisArg?

unknown

Optional this binding for the predicate.

Returns

S | undefined

The matched element typed as S, or undefined if not found.

Remarks

Time O(n) in the worst case; may exit early on the first match. Space O(1).

Inherited from

PriorityQueue.find

Call Signature

find(predicate, thisArg?): E | undefined;

Defined in: data-structures/base/iterable-element-base.ts:163

Finds the first element that satisfies the predicate and returns it.

Finds the first element of type S (a subtype of E) that satisfies the predicate and returns it.

Parameters
predicate

ElementCallback<E, R, unknown>

Type-guard predicate: (value, index, self) => value is S.

thisArg?

unknown

Optional this binding for the predicate.

Returns

E | undefined

The matched element typed as S, or undefined if not found.

Remarks

Time O(n) in the worst case; may exit early on the first match. Space O(1).

Inherited from

PriorityQueue.find


fix()

fix(): boolean[];

Defined in: data-structures/heap/heap.ts:899

Restore heap order bottom-up (heapify in-place).

Returns

boolean[]

Array of per-node results from fixing steps.

Remarks

Time O(N), Space O(1)

Inherited from

PriorityQueue.fix


forEach()

forEach(callbackfn, thisArg?): void;

Defined in: data-structures/base/iterable-element-base.ts:132

Invokes a callback for each element in iteration order.

Parameters

callbackfn

ElementCallback<E, R, void>

Function invoked per element with signature (value, index, self).

thisArg?

unknown

Optional this binding for the callback.

Returns

void

void.

Remarks

Time O(n), Space O(1).

Inherited from

PriorityQueue.forEach


has()

has(element): boolean;

Defined in: data-structures/heap/heap.ts:722

Check if an equal element exists in the heap.

Parameters

element

E

Element to search for.

Returns

boolean

True if found.

Remarks

Time O(N), Space O(1)

Example

// Check element existence
const heap = new Heap<number>([3, 1, 2], { comparator: (a, b) => a - b });
console.log(heap.has(1)); // true;
console.log(heap.has(99)); // false;

Inherited from

PriorityQueue.has


isEmpty()

isEmpty(): boolean;

Defined in: data-structures/heap/heap.ts:622

Check whether the heap is empty.

Returns

boolean

True if size is 0.

Remarks

Time O(1), Space O(1)

Example

// Check if heap is empty
const heap = new Heap<number>([], { comparator: (a, b) => a - b });
console.log(heap.isEmpty()); // true;
heap.add(1);
console.log(heap.isEmpty()); // false;

Inherited from

PriorityQueue.isEmpty


map()

map<EM, RM>(
callback,
options,
thisArg?): Heap<EM, RM>;

Defined in: data-structures/heap/heap.ts:1119

Map elements into a new heap of possibly different element type.

Type Parameters

EM

EM

RM

RM

Parameters

callback

ElementCallback<E, R, EM>

Mapping function (element, index, heap) → newElement.

options

IterableElementBaseOptions<EM, RM> & object & object

Options for the output heap, including comparator for EM.

thisArg?

unknown

Value for this inside the callback.

Returns

Heap<EM, RM>

A new heap with mapped elements.

Remarks

Time O(N log N), Space O(N)

Example

// Transform elements
const heap = new Heap<number>([1, 2, 3], { comparator: (a, b) => a - b });
const doubled = heap.map(x => x * 2, { comparator: (a, b) => a - b });
console.log(doubled.peek()); // 2;

Inherited from

PriorityQueue.map


mapSame()

mapSame(callback, thisArg?): this;

Defined in: data-structures/heap/heap.ts:1143

Map elements into a new heap of the same element type.

Parameters

callback

ElementCallback<E, R, E>

Mapping function (element, index, heap) → element.

thisArg?

unknown

Value for this inside the callback.

Returns

this

A new heap with mapped elements.

Remarks

Time O(N log N), Space O(N)

Inherited from

PriorityQueue.mapSame


peek()

peek(): E | undefined;

Defined in: data-structures/heap/heap.ts:574

Get the current top element without removing it.

Returns

E | undefined

Top element or undefined.

Remarks

Time O(1), Space O(1)

Example

// Heap for event processing with priority
interface Event {
id: number;
type: 'critical' | 'warning' | 'info';
timestamp: number;
message: string;
}

// Custom priority: critical > warning > info
const priorityMap = { critical: 3, warning: 2, info: 1 };

const eventHeap = new Heap<Event>([], {
comparator: (a: Event, b: Event) => {
const priorityA = priorityMap[a.type];
const priorityB = priorityMap[b.type];
return priorityB - priorityA; // Higher priority first
}
});

// Add events in random order
eventHeap.add({ id: 1, type: 'info', timestamp: 100, message: 'User logged in' });
eventHeap.add({ id: 2, type: 'critical', timestamp: 101, message: 'Server down' });
eventHeap.add({ id: 3, type: 'warning', timestamp: 102, message: 'High memory' });
eventHeap.add({ id: 4, type: 'info', timestamp: 103, message: 'Cache cleared' });
eventHeap.add({ id: 5, type: 'critical', timestamp: 104, message: 'Database error' });

console.log(eventHeap.size); // 5;

// Process events by priority (critical first)
const processedOrder: Event[] = [];
while (eventHeap.size > 0) {
const event = eventHeap.poll();
if (event) {
processedOrder.push(event);
}
}

// Verify critical events came first
console.log(processedOrder[0].type); // 'critical';
console.log(processedOrder[1].type); // 'critical';
console.log(processedOrder[2].type); // 'warning';
console.log(processedOrder[3].type); // 'info';
console.log(processedOrder[4].type); // 'info';

// Verify O(log n) operations
const newHeap = new Heap<number>([5, 3, 7, 1]);

// Add - O(log n)
newHeap.add(2);
console.log(newHeap.size); // 5;

// Poll - O(log n)
const removed = newHeap.poll();
console.log(removed); // 1;

// Peek - O(1)
const top = newHeap.peek();
console.log(top); // 2;

Inherited from

PriorityQueue.peek


poll()

poll(): E | undefined;

Defined in: data-structures/heap/heap.ts:464

Remove and return the top element.

Returns

E | undefined

Top element or undefined.

Remarks

Time O(log N), Space O(1)

Example

// Heap with custom comparator (MaxHeap behavior)
interface Task {
id: number;
priority: number;
name: string;
}

// Custom comparator for max heap behavior (higher priority first)
const tasks: Task[] = [
{ id: 1, priority: 5, name: 'Email' },
{ id: 2, priority: 3, name: 'Chat' },
{ id: 3, priority: 8, name: 'Alert' }
];

const maxHeap = new Heap(tasks, {
comparator: (a: Task, b: Task) => b.priority - a.priority
});

console.log(maxHeap.size); // 3;

// Peek returns highest priority task
const topTask = maxHeap.peek();
console.log(topTask?.priority); // 8;
console.log(topTask?.name); // 'Alert';

Inherited from

PriorityQueue.poll


print()

print(): void;

Defined in: data-structures/base/iterable-element-base.ts:268

Prints toVisual() to the console. Intended for quick debugging.

Returns

void

void.

Remarks

Time O(n) due to materialization, Space O(n) for the intermediate representation.

Inherited from

PriorityQueue.print


reduce()

Reduces all elements to a single accumulated value.

Param

Reducer of signature (acc, value, index, self) => nextAcc. The first element is used as the initial accumulator.

Param

Reducer of signature (acc, value, index, self) => nextAcc.

Param

The initial accumulator value of type E.

Template

The accumulator type when it differs from E.

Param

Reducer of signature (acc: U, value, index, self) => U.

Param

The initial accumulator value of type U.

Remarks

Time O(n), Space O(1). Throws if called on an empty structure without initialValue.

Call Signature

reduce(callbackfn): E;

Defined in: data-structures/base/iterable-element-base.ts:193

Parameters
callbackfn

ReduceElementCallback<E, R>

Returns

E

Inherited from

PriorityQueue.reduce

Call Signature

reduce(callbackfn, initialValue): E;

Defined in: data-structures/base/iterable-element-base.ts:194

Parameters
callbackfn

ReduceElementCallback<E, R>

initialValue

E

Returns

E

Inherited from

PriorityQueue.reduce

Call Signature

reduce<U>(callbackfn, initialValue): U;

Defined in: data-structures/base/iterable-element-base.ts:195

Type Parameters
U

U

Parameters
callbackfn

ReduceElementCallback<E, R, U>

initialValue

U

Returns

U

Inherited from

PriorityQueue.reduce


refill()

refill(elements): boolean[];

Defined in: data-structures/heap/heap.ts:680

Replace the backing array and rebuild the heap.

Parameters

elements

Iterable<E>

Iterable used to refill the heap.

Returns

boolean[]

Array of per-node results from fixing steps.

Remarks

Time O(N), Space O(N)

Inherited from

PriorityQueue.refill


setEquality()

setEquality(equals): this;

Defined in: data-structures/heap/heap.ts:826

Set the equality comparator used by has/delete operations.

Parameters

equals

(a, b) => boolean

Equality predicate (a, b) → boolean.

Returns

this

This heap.

Remarks

Time O(1), Space O(1)

Inherited from

PriorityQueue.setEquality


some()

some(predicate, thisArg?): boolean;

Defined in: data-structures/base/iterable-element-base.ts:109

Tests whether at least one element satisfies the predicate.

Parameters

predicate

ElementCallback<E, R, boolean>

Function invoked for each element with signature (value, index, self).

thisArg?

unknown

Optional this binding for the predicate.

Returns

boolean

true if any element passes; otherwise false.

Remarks

Time O(n) in the worst case; may exit early on first success. Space O(1).

Inherited from

PriorityQueue.some


sort()

sort(): E[];

Defined in: data-structures/heap/heap.ts:952

Return all elements in ascending order by repeatedly polling.

Returns

E[]

Sorted array of elements.

Remarks

Time O(N log N), Space O(N)

Example

// Sort elements using heap
const heap = new Heap<number>([5, 1, 3, 2, 4]);
const sorted = heap.sort();
console.log(sorted); // [1, 2, 3, 4, 5];

Inherited from

PriorityQueue.sort


toArray()

toArray(): E[];

Defined in: data-structures/base/iterable-element-base.ts:245

Materializes the elements into a new array.

Returns

E[]

A shallow array copy of the iteration order.

Remarks

Time O(n), Space O(n).

Inherited from

PriorityQueue.toArray


toVisual()

toVisual(): E[];

Defined in: data-structures/base/iterable-element-base.ts:257

Returns a representation of the structure suitable for quick visualization. Defaults to an array of elements; subclasses may override to provide richer visuals.

Returns

E[]

A visual representation (array by default).

Remarks

Time O(n), Space O(n).

Inherited from

PriorityQueue.toVisual


values()

values(): IterableIterator<E>;

Defined in: data-structures/base/iterable-element-base.ts:71

Returns an iterator over the values (alias of the default iterator).

Returns

IterableIterator<E>

An IterableIterator<E> over all elements.

Remarks

Creating the iterator is O(1); full iteration is Time O(n), Space O(1).

Inherited from

PriorityQueue.values


from()

static from<T, R, S>(
this,
elements?,
options?): S;

Defined in: data-structures/heap/heap.ts:258

Create a heap of the same class from an iterable.

Type Parameters

T

T

R

R = any

S

S extends Heap<T, R> = Heap<T, R>

Parameters

this

Object

elements?

Iterable<T | R, any, any>

Iterable of elements or raw records.

options?

HeapOptions<T, R>

Heap options including comparator.

Returns

S

A new heap instance of this class.

Remarks

Time O(N), Space O(N)

Inherited from

PriorityQueue.from


heapify()

static heapify<EE, RR>(elements, options): Heap<EE, RR>;

Defined in: data-structures/heap/heap.ts:276

Build a Heap from an iterable in linear time given a comparator.

Type Parameters

EE

EE = any

RR

RR = any

Parameters

elements

Iterable<EE>

Iterable of elements.

options

HeapOptions<EE, RR>

Heap options including comparator.

Returns

Heap<EE, RR>

A new Heap built from elements.

Remarks

Time O(N), Space O(N)

Inherited from

PriorityQueue.heapify


Protected Members

_toElementFn?

protected optional _toElementFn?: (rawElement) => E;

Defined in: data-structures/base/iterable-element-base.ts:38

The converter used to transform a raw element (R) into a public element (E).

Parameters

rawElement

R

Returns

E

Remarks

Time O(1), Space O(1).

Inherited from

PriorityQueue._toElementFn

Accessors

_createInstance()

protected _createInstance(options?): this;

Defined in: data-structures/heap/heap.ts:1216

(Protected) Create an empty instance of the same concrete class.

Parameters

options?

HeapOptions<E, R>

Options to override comparator or toElementFn.

Returns

this

A like-kind empty heap instance.

Remarks

Time O(1), Space O(1)

Inherited from

PriorityQueue._createInstance


_createLike()

protected _createLike<EM, RM>(elements?, options?): Heap<EM, RM>;

Defined in: data-structures/heap/heap.ts:1234

(Protected) Create a like-kind instance seeded by elements.

Type Parameters

EM

EM

RM

RM

Parameters

elements?

Iterable<EM, any, any> | Iterable<RM, any, any>

Iterable of elements or raw values to seed.

options?

HeapOptions<EM, RM>

Options forwarded to the constructor.

Returns

Heap<EM, RM>

A like-kind heap instance.

Remarks

Time O(N log N), Space O(N)

Inherited from

PriorityQueue._createLike


_getIterator()

protected _getIterator(): IterableIterator<E>;

Defined in: data-structures/heap/heap.ts:1174

Internal iterator factory used by the default iterator.

Returns

IterableIterator<E>

An iterator over elements.

Remarks

Implementations should yield in O(1) per element with O(1) extra space when possible.

Inherited from

PriorityQueue._getIterator


_spawnLike()

protected _spawnLike<EM, RM>(options?): Heap<EM, RM>;

Defined in: data-structures/heap/heap.ts:1254

(Protected) Spawn an empty like-kind heap instance.

Type Parameters

EM

EM

RM

RM

Parameters

options?

HeapOptions<EM, RM>

Options forwarded to the constructor.

Returns

Heap<EM, RM>

An empty like-kind heap instance.

Remarks

Time O(1), Space O(1)

Inherited from

PriorityQueue._spawnLike