Data structures 将k个元素插入包含n个元素的二进制堆的时间复杂性

Data structures 将k个元素插入包含n个元素的二进制堆的时间复杂性,data-structures,binary-heap,Data Structures,Binary Heap,在已经包含n个元素的二进制堆中插入k个新元素的时间复杂度是多少?我有一个约束,我需要插入复杂度为0(k+logn)的k个元素 提示:使用与堆构造类似的自下而上方法。这个问题没有简单的答案 二进制堆插入的平均复杂度为O(1),最坏情况为O(logn)。无论k,复杂性都将保持在该范围内,但完成操作所需的实际时间(不是时间复杂性;我相信您可能会混淆术语)将取决于实现、平台和风向 就时间而言,最接近一个具体答案的是插入k元素所用的时间充其量与k成线性比例,充其量与log(x)从N集成到k+N成线性比例。

在已经包含n个元素的二进制堆中插入k个新元素的时间复杂度是多少?我有一个约束,我需要插入复杂度为0(k+logn)的k个元素


提示:使用与堆构造类似的自下而上方法。

这个问题没有简单的答案

二进制堆插入的平均复杂度为
O(1)
,最坏情况为
O(logn)
。无论
k
,复杂性都将保持在该范围内,但完成操作所需的实际时间(不是时间复杂性;我相信您可能会混淆术语)将取决于实现、平台和风向

就时间而言,最接近一个具体答案的是插入
k
元素所用的时间充其量与
k
成线性比例,充其量与
log(x)
N
集成到
k+N
成线性比例。对于
N
显著大于
k
的情况,我们可以近似计算与
k log N
成比例所需的时间


有关更多信息,请参见:

那么为什么答案比简单的答案更复杂:O(k)表示平均值,O(k log(n))表示最坏情况?因为
k log(n)
与第一次插入所用的时间乘以
k
,这是k OK的一个很好的近似值,所以我们有O(k log(n+k))@这比最坏的情况还要糟糕……你怎么知道插入的平均复杂度是
O(1)
?看来这是最好的时机。最坏的情况确实是
O(logn)
。要插入1个元素,需要logn时间。所以要插入k个元素,它应该是O(k logn)。