Бинарная куча — это полное бинарное дерево, которое удовлетворяет свойству кучи, где каждый родительский узел меньше своих потомков. В этой реализации используется min-heap, хранящаяся в векторе для эффективных операций приоритетной очереди.
Куча представлена с использованием векторного массива, где:
i его потомки находятся в 2*i и 2*i+1currentSize отслеживает количество элементов, которые сейчас в кучеOverflow, если куча переполненаUnderflow, если куча пустаpercolateDown() — перемещает элемент вниз по куче
buildHeap() — строит кучу из произвольного набора элементов
percolateDown() для всех нелистовых узловВспомогательные методы — isEmpty(), isFull(), makeEmpty() предоставляют базовые проверки состояния
В реализации используются пользовательские исключения:
Underflow — выбрасывается, когда операции пытаются обратиться к пустой кучеOverflow — выбрасывается, когда вставка превышает ёмкостьТестовая программа проверяет корректность, вставляя 10 000 элементов в псевдослучайном порядке, а затем проверяя, что они извлекаются в отсортированном порядке.
В векторной реализации двоичной кучи родитель узла с индексом i всегда находится по индексу i/2, что делает поиск родителя операцией O(1) независимо от размера кучи.
Новый — ещё не проверен сообществом
Вы