我正在处理来自练习数据结构决赛的练习题
问题
当使用保持组织为最小堆的数据结构数组时,找到最坏情况的渐近运行时删除。
我最初的想法是删除操作是O(log n)因为删除的算法是
- 将开始元素与结束元素交换。将结束元素设置为空
- 减小大小
- 将新的根向下渗透到树上
- 返回原始开始元素
步骤 1、2 和 4 都应该是常数时间。第 3 步应该在O(log n)中运行,因为完整树的高度是log n。所以总的来说,删除的运行时间不应该是O(log n)
但是,如果您查看答案键(来自链接),当使用保持组织为最小堆的数组时,删除的最坏情况渐近运行时间是O(n)。有人可以解释为什么会这样吗?