【数据结构与算法】堆实现优先级队列

news2024/11/16 1:38:39

堆实现优先级队列

  • 一.堆实现优先级队列的原理
  • 二.优先级队列结构体
  • 三.堆初始化
  • 四.入队
  • 五.出队
  • 六.销毁队列
  • 七.总结

一.堆实现优先级队列的原理

堆就是可以将最大值或者最小值,每次取出,那么刚好可以进行排序,而我们的优先级队列,就是对于优先级最高的先进行出队,也就相当于是排序.

并且原来我们使用的是链队列来比较优先级,需要一个个的比较,如果我们采用堆,那么我们比较的次数就是log n,n为总的元素个数.
那么效率会高于链队列,所以我们采用对来实现优先级队列.

二.优先级队列结构体

在这里插入图片描述
用堆来实现优先级队列,完全就是堆的处理,只不过将堆数组的值改为队列的优先级就可以.

三.堆初始化

与堆的初始化无异.
在这里插入图片描述

遍历父节点:
在这里插入图片描述
向下比较调整:
在这里插入图片描述

四.入队

入队需要先判断是否已满
在这里插入图片描述
然后再进行插入:
在这里插入图片描述
然后插入后的数据,我们要进行向上比较:
在这里插入图片描述

五.出队

也是先判断是否为空:
在这里插入图片描述
然后进行数据删除:
在这里插入图片描述
同时对堆顶,进行向下调整.

六.销毁队列

有new就有delete进行销毁.
在这里插入图片描述

七.总结

用堆来实现优先级队列真是一种不错的选择!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975657.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

空气净化器对去除宠物毛有效吗?小型猫毛空气净化器使用感受

作为一个养猫多年的猫奴,家里有两只可爱的小猫咪:小白和小花。虽然相处起来很开心,但也给生活带来了一些小麻烦。谁懂啊,我真的受够了,每天都在粘毛。猫窝的猫毛一周不清理就要堆成山,空气中也全是浮毛&…

JAVA线程中的安全性问题详解

多线程很难掌握,稍不注意,就容易使程序崩溃。我们以在路上开车为例: 在一个单向行驶的道路上,每辆汽车都遵守交通规则,这时候整体通行是正常的。『单向车道』意味着『一个线程』,『多辆车』意味着『多个 jo…

嵌入式学习---DAY18:shell脚本

shell脚本文件进程网络HtmlDb shell脚本是一系列shell命令的集合。 shell 命令解释器 shell编程:解释型语言、边翻译边执行、擅长文件处理,操作系统管理、开发效率高 cp 1 2、执、效率低、移植性好 C语言:编译型语言、先编译再执行、擅长数据计算…

【Linux】一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?

欢迎来到 CILMY23 的博客 🏆本篇主题为:一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向? 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Py…

绘制图层的图形全部都在geojson图层之下会被覆盖,同步graphic类型使用说明

### 绘制图层js const graphicLayer new mars3d.layer.GraphicLayer({zIndex: 1000000000000000000000000,hasEdit: false,isAutoEditing: false, // 绘制完成后是否自动激活编辑// addHeight: 1,allowDrillPick: false, }) 绘制方法js graphicLayer.startDraw({type: type,st…

一款免费的Windows 11/10系统常见问题修复工具

FixWin是一款功能强大的Windows系统修复工具,免费便携,无需安装即可使用。FixWin旨在帮助用户解决各种常见的Windows问题。它提供了多种修复选项和故障排除功能,适用于 Windows 11/10。 FixWin 主要功能: 系统文件检查器&#x…

深⼊理解指针(3)

1. 字符指针变量 2. 数组指针变量 3. ⼆维数组传参的本质 4. 函数指针变量 5. 函数指针数组 6. 转移表 1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 ⼀般使⽤: char* 这两种方式都是把字符串中的首字符的地址赋值给pc。 在这串代码中 str1内容的地…

JVM高级特性

JVM高级特性 内存管理 jvm是自动内存管理的 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些…

基于STM32的智能仓储管理系统教程

目录 引言环境准备智能仓储管理系统基础代码实现:实现智能仓储管理系统 物品识别与追踪模块环境监控模块数据处理与存储模块用户界面与远程管理应用场景:仓储管理与优化常见问题与解决方案收尾与总结 引言 随着电子商务和物流行业的快速发展&#xff…

C++手撕简易vector

提前准备工作 由于vector跟string不同&#xff0c;vector是可以存储不同类型的变量的容器&#xff0c;因此实现类模板是肯定的 在原本的STL的vector容器中&#xff0c;主要成员变量有&#xff0c;start&#xff0c;finish&#xff0c;和 end_of_storage 所以 template<cl…

leetcode 2415.反转二叉树的奇数层

1.题目要求: 给你一棵 完美 二叉树的根节点 root &#xff0c;请你反转这棵树中每个 奇数 层的节点值。例如&#xff0c;假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] &#xff0c;那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。 反转后&#xff0c;返回树的根节点。完美 二叉…

SolverLearner:提升大模型在高度归纳推理的复杂任务性能,使其能够在较少的人为干预下自主学习和适应

SolverLearner&#xff1a;提升大模型在高度归纳推理的复杂任务性能&#xff0c;使其能够在较少的人为干预下自主学习和适应 提出背景归纳推理&#xff08;Inductive Reasoning&#xff09;演绎推理&#xff08;Deductive Reasoning&#xff09;反事实推理&#xff08;Counterf…

npm ERR! missing script: serve

报错原因&#xff1a;我这里是因为跑错命令了&#xff0c;我用的npm run serve 解决办法&#xff1a;去package.json文件里面找到对应的serve命令运行即可&#xff0c;每个系统都不太一样&#xff0c;如果还不行可以看看是不是项目终端搞错了&#xff0c;比如我这个项目有两个前…

行为型设计模式3:模板方法/备忘录/解释器/迭代器

设计模式&#xff1a;模板方法/备忘录/解释器/迭代器 (qq.com)

无需提示的思考链推理:深度探索大型语言模型的内在能力

人工智能咨询培训老师叶梓 转载标明出处 在人工智能领域&#xff0c;提升大模型&#xff08;LLMs&#xff09;的推理能力一直是研究的重点。传统的方法主要依赖于特定的提示技术&#xff0c;例如少量样本或零样本的思考链&#xff08;CoT&#xff09;提示。这些方法虽然有效&am…

力扣爆刷第169天之TOP200五连刷111-115(课程表、单词搜索、归并)

力扣爆刷第169天之TOP200五连刷111-115&#xff08;课程表、单词搜索、归并&#xff09; 文章目录 力扣爆刷第169天之TOP200五连刷111-115&#xff08;课程表、单词搜索、归并&#xff09;一、207. 课程表二、LCR 125. 图书整理 II三、402. 移掉 K 位数字四、79. 单词搜索五、9…

Python自动化办公2.0:重塑工作效率的未来

在现代办公环境中&#xff0c;自动化技术和数据分析已经成为提升工作效率和决策质量的关键。随着Python编程语言的发展&#xff0c;我们迎来了“Python自动化办公2.0”时代&#xff0c;这一时代不仅包括强大的数据分析工具&#xff0c;还涵盖了酷炫的可视化技术和前沿的机器学习…

【卷积神经网络】卷积层详解【数学+python代码】

1、简介 学习目标&#xff1a; 掌握卷积计算过程掌握特征图大小计算方法掌握PyTorch卷积层API 基本概念&#xff1a; ①在计算机视觉领域&#xff0c;往往我们输入的图像都很大&#xff0c;使用全连接网络的话&#xff0c;计算的代价较高。 另外图像也很 难保留原有的特征 &am…

科技赋能生活——便携气象站

传统气象站往往庞大而复杂&#xff0c;需要专业人员维护&#xff0c;它小巧玲珑&#xff0c;设计精致&#xff0c;可以轻松放入背包或口袋&#xff0c;随身携带&#xff0c;不占空间。无论是城市白领穿梭于高楼大厦间&#xff0c;还是户外爱好者深入山林湖海&#xff0c;都能随…

numpy如何按等长分割数组

numpy如何按等长分割数组 1、效果 2、流程 1、分割数组 2、转列表3、代码 # -*- coding: utf-8 -*-""" @contact: 微---信 1257309054 @file: test.py @time: 2024/8/03 19:46 @author: LDC """ import numpy as np# 假设arr是需要分割的nump…