Почему priority_queue
реализовано с использованием куч, тогда как без использования куч тоже можно реализовать с помощью только векторов.
Предположим, мы используем вектор как очередь и сохраняем элементы в порядке убывания.
Мы можем использовать это как приоритетную очередь.
Для вставки: мы можем использовать бинарный поиск. Complexity O(logN)
Для удаления: Здесь также мы можем использовать бинарный поиск. Complexity O(logN)
Для верхнего элемента: O(1)
Кроме того, мы можем получить доступ к элементу k-го максимума всего за O(1)
время, что не относится к кучам.
Тогда, почему мы используем кучи для реализации приоритетных очередей?