data-structures - Heap pop 操作的时间复杂度

标签 data-structures time-complexity heap

很长一段时间,我一直假设Heap上的pop操作的时间复杂度是O(1) .

是吗O(1)O(log(n)) ?

最佳答案

好的 O(1)仅用于检索堆的根。要删除这个根,所有堆实现都有一个 O(log(n))时间复杂度。例如,python heapq 模块实现了一个带有数组的堆,并且数组的第一个元素始终是堆的根。所以在删除根时,有一个从根向下到堆底的替换过程,需要 O(log(n)) 时间,O(log(n)) 是替换的总次数。
enter image description here

关于data-structures - Heap pop 操作的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52556930/

相关文章:

ruby - 为什么我的 ruby​​ 脚本执行时间太长?

string - 快速比较两个字符串

java - 添加到 PriorityQueue 的对象不按其优先级排序

c++ - 引用类型的C++内存管理

algorithm - 寻找获胜者和第二名获胜者

c++ - 如何在 C 或 C++ 中检查结构是否为 NULL

algorithm - 摊销的复杂性

algorithm - 这里介绍的粒子模拟数据结构/算法的正式名称是什么?

java - 算法是指数的,有没有办法让它不是这样?

algorithm - 范围内的整数赋值