Я хотел бы знать, какова временная сложность Java PriorityQueue.Add()
для n
элементов.
Я понимаю, что потенциальная вставка одного элемента в худшем случае - это O(log(n))
, но мне не ясно, какова временная сложность для вставки набора из n
элементов?
Я видел утверждения из различных источников (без доказательств), что время создания кучи приоритетной очереди из n
элементов равно O(n)
, а также видел утверждения о том, что оно равно O(nlog(n))
, что имеет смысл, учитывая, что вставка равна O(log(n))
, что умножает n
раз будет действительно равно O(nlog(n))
Примечание. Меня интересует только худший случай, а не амортизация.
Этот вопрос предполагает, что существует логический способ описания процесса заполнения структуры данных (кучи) n
элементами, который отличается от простого рассмотрения n
x log(n)
вставок по отдельности.
Я не делаю никаких предположений относительно ввода (например, границ набора входных значений или частично упорядоченного ввода).
n
? Это довольно распространенный сценарий. - person James Wierzba   schedule 22.11.2017