Максимальная куча используется для приоритетной очереди из-за дешевого извлечения элемента max.
Однако, пожалуйста, допустите меня.
Разве мы не должны просто искать элемент max в O (N ) раз?
Я знаю, что для извлечения max нам требуется всего O (log N) времени, но прежде чем мы сможем это сделать, нам нужно построить кучу, которая сама по себе требует O (N) времени.
Так почему же мы go из-за такой сложности даже реализуем кучу?
Кроме того, некоторые могут сказать, что для выполнения повторного извлечения max heap является преимуществом.
Но, скажем, мы выполняем k Поисковые операции, поэтому при линейном поиске мы получаем O (KN) == O (N), что совпадает с кучей O (N + K) == O (N)
Если мы выполним N extract max, мы получим O (NLogN), что лучше, чем (NN) == (N ^ 2) поисковых операций.
Но там мы также можем отсортировать массив в O (NlogN) и затем иметь N экстрактов в O (1) время ==> O (NlogN) + O (N).
Поэтому я сомневаюсь, что нам действительно нужны кучи? Когда мы сможем заменить функциональность кучи гораздо более похожей процедурой, если не лучшей.
Что я пропускаю, и для чего реально используются кучи.
Прости мое невежество, и плохое использование грамматики. Не носитель языка, извините: (....