У меня есть двоичная куча на основе массива, используемая для поиска по графу (хотя цель не имеет значения).
(Элемент с индексом 0 является вершиной кучи.)
Время от времени элемент в верхней части кучи удовлетворяет критерию, который я ищу, и поэтому я извлекаю его и сохраняю для последующего использования.
В настоящее время я просто помещаю эти найденные элементы в отдельный массив и возврат их пользователю.
Однако мне интересно: есть ли какой-либо эффективный способ сохранить элемент в начале исходного массива, каким-то образом просто изменив границы "активного " часть кучи каким-то образом (т. е. сдвинув начальную границу активной части на один элемент) и продолжать, пока я не закончу?
Это наивно испортит структуру кучи.