将k个新元素插入到已包含n个元素的二进制堆中的时间复杂度是多少?我有约束,我需要在0(k + Log n)复杂度中插入k个元素。
提示:使用类似于堆构造的自下而上方法。
答案 0 :(得分:0)
这个问题没有简单的答案。
二进制堆插入的平均复杂度为O(1)
,最差情况为O(log N)
。无论k
如何,复杂性都将保持在该范围内,但完成操作所需的实际时间(不是时间复杂度;我相信您可能会混淆这些术语)将取决于实现,平台和方式风在吹。
关于时间的具体答案,关闭的事情是,插入k
元素所需的时间最多是线性比例到k
,最坏的比例是log (x)
已整合N
到k+N
。如果N
明显大于k
,我们可以估算比例到k log N
的时间。
有关详细信息,请参阅:http://en.wikipedia.org/wiki/Binary_heap