【发布时间】:2023-04-01 06:03:01
【问题描述】:
我在理解复杂性方面遇到了困难,您能否解释一下为什么堆中的删除复杂性等于 O(log n) 以及为什么构建是 O(n)? (我假设插入复杂度 O(1) 仅指添加元素,没有位置切换)。 我们在底部添加的元素不是假设在最坏的情况下一直向上移动吗?因此(即使我不明白为什么它是 log n ),Build 也不应该是 O(log n) 吗?
【问题讨论】:
-
想想找到合适的地方,根据结构复制所有元素 vs 清理并向上移动元素
-
@gkhaos 建筑物不是在做同样的事情吗?在最坏的情况下将元素一直向上移动,因此在一个分支上向上移动?如果有意义的话。
-
也许你可以参考你发现堆构建比删除慢的来源。在简短的谷歌搜索中,我发现了这个问题:Why deallocating heap memory is much slower than allocating it?
标签: heap complexity-theory analysis