Несмотря на то, что куча спасает вас от поиска в массиве, она замедляет часть «обновления» алгоритма: обновления массива O (1), а обновления кучи O (log (N)).
По сути, вы торгуете скоростью в одной части алгоритма за скорость в другой.
В любом случае вам придется искать N раз.
Однако в плотных графах вам нужно много обновлять (~ V ^ 2), а в разреженных - нет.
Еще один пример, который мне не нравился, - поиск элементов в массиве.
Если вы делаете это только один раз, лучше использовать линейный поиск, но если вы делаете много запросов, лучше отсортировать его и использовать бинарный поиск каждый раз.