max - 您将使用哪些操作来实现具有入队和出队的优先队列 PQ?
问题描述
假设您正在实现一个优先队列 PQ,它在出队操作时返回最大元素。如果我们使用最大堆来实现 PQ,入队是 O(______) 操作,出队是 O(____) 操作
有人可以回答/解释你是如何得到它的......我在想两者都登录但不确定?
解决方案
想想二叉堆是如何工作的。
插入项目时,将其添加为堆的最后一个节点,然后将其筛选到适当的位置。由于包含 n 个项目的堆的高度为 log(n),并且您可能必须将项目一直筛选到顶部,因此最坏的情况是 O(log n)。
当您删除一个项目时,您将根注释替换为堆中的最后一个节点,然后将其向下筛选。最坏的情况是,您必须将它一直筛选到堆的底部:移动 log(n) 级别。因此,O(log n)。
推荐阅读
- java - MYSQL SELECT from Two Tables,收入减去费用=总收入
- javascript - JavaScript Canvas 问题理解对象移动
- reactjs - Node 尝试编译 SVG 文件
- reactjs - 在 react.js 中将数据动态绑定到 InnerHTML
- javascript - Jquery window.resize(event) => {} 适用于检查元素,但不适用于调整 chrome(或边缘)窗口的大小
- python - 运行 python 可执行文件时没有名为“请求”的模块,即使它已安装
- python - 如何在 min 函数中使用条件语句
- python - 如何在 matplotlib 中旋转条形图?
- api - API 管理工具,允许在 API 上多次应用相同的策略
- r - 从字符串中拆分小于 4 的十进制数字