【发布时间】:2018-05-05 08:41:02
【问题描述】:
我想知道PriorityQueue.Add() 的Java n 元素的时间复杂度是多少。
我知道插入单个元素的潜在更坏情况是O(log(n)),但我不清楚插入n 元素集合的时间复杂度是多少?
我已经看到来自各种来源(没有证据)的声明,即构建 n 元素的优先级队列堆的时间是 O(n),并且还看到声称它是 O(nlog(n)),这使得给定插入的感觉是O(log(n)),乘以n 确实等于O(nlog(n))
注意:我只对更坏的情况感兴趣,而不是摊销。
这个问题假设有一种合乎逻辑的方式来描述使用 n 元素填充数据结构(堆)的行为,这与单独考虑 n x log(n) 插入不同。
我没有对输入做任何假设(例如输入值集的界限,或部分有序的输入)。
【问题讨论】:
-
下面的人在玩你错误的定义。插入数据结构的时间复杂度通常意味着如果结构中有 n 个元素,那么向其中插入 1 个元素的时间复杂度是多少。你说插入n个元素。如果要插入 n,则不能插入小于 n。
-
@MarianP 没有标准的逻辑方式来描述用
n元素“填充”数据结构的行为吗?这是一种相当常见的情况。 -
@pjs 是的,你是对的,这是重复的。我将投票结束并指出现有问题
标签: java time-complexity heap priority-queue