Двоичная куча. На вершине всегда «наименьший» по компаратору элемент: по умолчанию это min-heap, для max-heap передайте (a, b) => b - a или используйте MaxHeap. push/pop — O(log n), peek — O(1), построение из коллекции — O(n).
(a, b) => b - a
push
pop
peek
const tasks = new BinaryHeap<{ id: number; deadline: number }>([], (a, b) => a.deadline - b.deadline);tasks.push({ id: 1, deadline: 30 }).push({ id: 2, deadline: 10 });tasks.pop(); // { id: 2, deadline: 10 } Copy
const tasks = new BinaryHeap<{ id: number; deadline: number }>([], (a, b) => a.deadline - b.deadline);tasks.push({ id: 1, deadline: 30 }).push({ id: 2, deadline: 10 });tasks.pop(); // { id: 2, deadline: 10 }
Добавляет элемент.
Извлекает вершину кучи.
Добавляет элемент и сразу извлекает вершину — быстрее, чем push + pop.
Вершина кучи без удаления.
Элементы в порядке хранения (не отсортированы).
Все элементы в порядке извлечения; куча не изменяется.
Итерация в порядке хранения (не отсортирована).
Двоичная куча. На вершине всегда «наименьший» по компаратору элемент: по умолчанию это min-heap, для max-heap передайте
(a, b) => b - aили используйте MaxHeap.push/pop— O(log n),peek— O(1), построение из коллекции — O(n).Example