用堆实现优先级队列(Priority Queue)

2023-11-03

1.优先级队列定义:

 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有

(1)查找

(2)插入一个新元素 

(3)删除 一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素 。

    对于优先权相同的元素,可按先进先出次序处理或按任意优先权进行。

2.优先级队列的实现方案

    优先级队列的实现既要兼顾成本,也要兼顾效率

    (1).第一种使用向量实现:


                  由图可知,在使用插入操作时,时间复杂度为o(1),但是在getMax,需要遍历整个向量,找出最大的元素,

而delMax操作时却不仅要遍历向量找到最大元素,而且在摘抄它之后将所有元素顺序后移,这种时间复杂度是无法接受的。

(2).使用有序向量

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用堆实现优先级队列(Priority Queue) 的相关文章

  • .NET Core使用EF Core框架

    文章目录 概述 安装EF Core 使用EF Core增删改查 单表查询 插入数据 修改数据 删除数据 概述 Entity Framework EF Core 是轻量化 可扩展 开源和跨平台版的常用 Entity Framework 数据访
  • linux的用户和组

    linux是一个多用户 多任务的分时操作系统 windows是一个单用户操作系统 linux系统中的用户类型 1 root 超级管理员 uid 用户ID 0 权限大于Windows中的Administrator 2 系统用户 伪用户 uid

随机推荐

  • panda 修改行名字 报错 Index does not support mutable operations

    在进行panda数据操作 扩充时出现两个tricks 使用data pd append 进行行扩充数据时 行名需要相同 才能实现自动扩充 使用data pd columns 修改行名时 不允许切片操作 只能按照原数据长建立一个列表赋值修改
  • Python从txt文件中逐行读取数据

    非常的简单 提供三种方法 方法一 f open foo txt 返回一个文件对象 line f readline 调用文件的 readline 方法 while line print line 后面跟 将忽略换行符 print line e
  • 如何做好一份前端工程师的简历?

    一 你是前端工程师 虽然简历都会有一些常规信息 但职业决定了这份简历核心内容和求职成败 所以 这份简历应该尽可能体现你自己是一个合格的前端工程师 专业的前端工程师是什么可以看看去年Nate Koechley的演讲 Professional
  • 二叉树相关算法

    二叉树类算法 一 二叉树的路径和 二叉树的每个节点为0 9的一个数字 根到叶子的一条路径拼成一个数 求所有路径形成的数字和 struct TreeNode TreeNode left TreeNode right int value int
  • Ab3d.DXEngine 6.0 Crack 2023

    Ab3d DXEngine 不是另一个游戏引擎 如Unity 它强迫您使用其游戏编辑器 其架构 并且需要许多技巧和窍门才能在标准 Net 应用程序中使用 Ab3d DXEngine 是一个新的渲染引擎 它是从头开始构建的 旨在用于标准桌面
  • 基于yolov5的NEU-NET产品缺陷目标检测

    一 yolov5的使用 1 1 1 YOLOv5的介绍与特点 1 1 2 YOLOv5的基本使用 1 1 3目录结构树 2 二 数据预处理与模型训练 4 2 1 NET NET数据集 4 三 模型评价与分析 8 第一次写 没啥经验 内容的话
  • Spring 自学笔记

    Spring 自学笔记终 前言 Spring全家桶 spring springmvc spring boot spring cloud spring 出现时间2002年左右 解决企业开发难度 作用 减轻对项目模块之间的管理 类和类之间的管理
  • 华为od机考试题-字符串单词首字母转换大小写

    while 1 try nums input split dp f w 0 upper w 1 for w in nums print join dp except Exception as e break
  • 常见哈希算法总结

    目录 哈希算法概述 常见的哈希算法 MD5算法 SHA 1算法 哈希算法的用途 校验下载文件 存储用户密码 Hmac MD5算法 哈希算法概述 哈希算法又称摘要算法 它的作用是 对任意一组输入数据进行计算 得到一个固定长度的输出摘要 哈希算
  • Python编写微信打飞机小游戏(七)

    如果觉得这篇文章对您有所启发 欢迎关注我的公众号 我会尽可能积极和大家交流 谢谢 Python编写微信打飞机小游戏 一 Python编写微信打飞机小游戏 二 Python编写微信打飞机小游戏 三 Python编写微信打飞机小游戏 四 Pyt
  • webpack

    一 是什么 loader 用于对模块的 源代码 进行转换 在 import 或 加载 模块时预处理文件 webpack做的事情 仅仅是分析出各种模块的依赖关系 然后形成资源列表 最终打包生成到指定的文件中 如下图所示 在webpack内部中
  • 保证业务高效运营 专有云虚拟网络是关键

    随着越来越多的企业用户上云 且客户业务场景多种多样的情况下 云计算面临的挑战也越来越多 如企业多 IDC 异地办公区 远程运维人员接入到企业内网需要一致的体验等场景下 还要提供高可靠 安全和易维护的网络能力 我们可以通过组合百度智能云网络模
  • ue4 解决编译保存蓝图时报无法报存资源.uasset错

    当你在打开蓝图时 逻辑没有任何错误 甚至你没有做任何修改 在编译保存时报资源错误 如下图 这时候 你打开任务管理器 在后台进程 你会发现一个在跑的ue进程 结束任务后就可以继续正常的编译保存了
  • 廉价的家用工作站方案:ThinkPad 存储升级及数据迁移

    最近 给当台式服务器一样使用了两年的 ThinkPad 做了存储升级和数据迁移 对硬盘也做了额外的散热处理 本篇文章里 我们分享下相关的经验和思考 希望能够帮助到有同样诉求的你 写在前面 本文的 主角 是一台 7x24 小时使用了两年的 T
  • 【基础篇】关于专栏介绍及ESP32环境搭建(vs code)

    前言 本专栏将会从零到实战的学习ESP32开发 将会持续更新 其中大概包括基础篇 实战篇和提高篇以及一些常见的错误如何解决 一 ESP32介绍 ESP32是 Espressif 开发的一系列低成本 低功耗的片上系统 SoC 微控制器 包括
  • matlab练习程序(模拟退火SA)

    模拟退火首先从某个初始候选解开始 当温度大于0时执行循环 在循环中 通过随机扰动产生一个新的解 然后求得新解和原解之间的能量差 如果差小于0 则采用新解作为当前解 如果差大于0 则采用一个当前温度与能量差成比例的概率来选择是否接受新解 温度
  • 带头结点的头插法和尾插法创建单链表

    首先我们先定义一个链表的结构体 typedef int DataType typedef struct Node DataType data struct Node next SLNode SLnode 定义链表的结构体 因为是带头节点的链
  • Easyx-----c++实现经典Windows扫雷

    一些说明 关于扫雷的基本实现 我在这篇博客已经详细介绍Easyx c语言实现简易版扫雷 考拉爱睡觉鸭 的博客 CSDN博客 这里不再描述 主要是以c 单例设计模式的方式实现扫雷 多加了右键点击笑脸作弊功能 不会扫雷的小伙伴也可以愉快玩耍了
  • vue3的slot插槽用法,`slot-scope` are deprecated

    前言 vue3的插槽使用方法发生了改变 和vue2相比较 使用vue2的写法 会报错 slot scope are deprecated vue2 上下对应 title是自己随便起的名字 1 定义一个普通的插槽 可以用div 任何标签 di
  • 用堆实现优先级队列(Priority Queue)

    1 优先级队列定义 优先级队列 priority queue 是0个或多个元素的集合 每个元素都有一个优先权 对优先级队列执行的操作有 1 查找 2 插入一个新元素 3 删除 一般情况下 查找操作用来搜索优先权最大的元素 删除操作用来删除该