优先级队列详解

优先级队列详解动力节点小编来为大家进行优先级队列详解,优先级队列是一种特殊类型的队列,其中每个元素都与一个优先级值相关联。并且,元素根据其优先级提供服务。即,首先服务更高优先级的元素。但是,如果出现具有相同优先级的元素,则按照它们在队列中的顺序提供服务。分配优先级值通常,在分配优先级时考虑元素本身的值。例如,具有最高值的元素被认为是最高优先级的元素。但是,在其他情况下,我们可以假设具有最低值的元素作为最高优先级元素。我们还可以根据需要设置优先级。优先队列和普通队列的区别在队列中,执行先进先

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

动力节点小编来为大家进行优先级队列详解,优先级队列是一种特殊类型的队列,其中每个元素都与一个优先级值相关联。并且,元素根据其优先级提供服务。即,首先服务更高优先级的元素。

但是,如果出现具有相同优先级的元素,则按照它们在队列中的顺序提供服务。

分配优先级值

通常,在分配优先级时考虑元素本身的值。例如,

具有最高值的元素被认为是最高优先级的元素。但是,在其他情况下,我们可以假设具有最低值的元素作为最高优先级元素。

我们还可以根据需要设置优先级。

优先级队列详解

优先队列和普通队列的区别

在队列中,执行先进先出规则,而在优先级队列中,根据优先级删除值。首先删除具有最高优先级的元素。

优先队列的实现

优先队列可以使用数组、链表、堆数据结构或二叉搜索树来实现。在这些数据结构中,堆数据结构提供了优先队列的有效实现。

因此,我们将在本教程中使用堆数据结构来实现优先级队列。在以下操作中实现了最大堆。

优先队列操作

优先级队列的基本操作是插入、移除和查看元素。

在研究优先队列之前,请参考堆数据结构以更好地理解二叉堆,因为它用于实现本文中的优先队列。

1. 将元素插入优先队列

通过以下步骤将元素插入优先级队列(最大堆)。

在树的末尾插入新元素。

优先级队列详解

堆肥树。

优先级队列详解

将元素插入优先级队列的算法(最大堆)

如果没有节点,则创建一个新节点。否则(一个节点已经存在)在末尾插入新节点(从左到右的最后一个节点。)

堆化数组对于最小堆,上述算法被修改parentNode为始终小于newNode。

2. 从优先队列中删除一个元素

从优先级队列(最大堆)中删除元素的操作如下:

选择要删除的元素。

优先级队列详解

与最后一个元素交换它。

优先级队列详解

删除最后一个元素。

优先级队列详解

堆肥树。

优先级队列详解

删除优先队列中元素的算法(最大堆)

如果nodeToBeDeleted是leafNode,则移除节点,否则交换nodeToBeDeleted与lastLeafNode,移除noteToBeDeleted

堆化数组对于最小堆,修改了上述算法,使两者childNodes都小于currentNode。

3.从优先队列偷看(查找最大值/最小值)

Peek 操作返回最大堆的最大元素或最小堆的最小元素,而不删除节点。

对于最大堆和最小堆

返回根节点

4.从优先队列中提取Max/Min

Extract-Max 返回从最大堆中删除后具有最大值的节点,而 Extract-Min 返回从最小堆中删除后具有最小值的节点。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190312.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java安装(找不到jre还苦恼的同志们)「建议收藏」

    java安装(找不到jre还苦恼的同志们)「建议收藏」玩java当然需要装java了,可是我的jre哪去了?懵逼的朋友请看下文。安装地址:(https://www.oracle.com/technetwork/java/javase/downloads/index.html)安装步骤:进入上面那个网址下载一个适合你操作系统的java,安装时,按照步骤一步一步向下走就OK了。(如果你下载的Java安装后,你能找到你的jre,就不要看下面的文章了,…

    2022年7月15日
    15
  • xiao776php,《xiao 776》_xiao 776_NEWS下载网「建议收藏」

    xiao776php,《xiao 776》_xiao 776_NEWS下载网「建议收藏」康平候爷一五一十述说了一遍,因是夏钰之伤在腿上,这段时日无法下榻,他自己已然焦躁得不行。xiao776因此,趋向正常性(normality)的倾向是一种格局的倾向,而格局里面的自我和物体则受制于格局以及格局与其内容的不变联结,这里的内容意指物体和自我。面对阻在他身前的最后一队死士,他疯了一般,浑身爆发出森然的杀意,弯刀过处全是一片飞扬的血肉,守卫渐渐抵挡不住,废宫越来越在眼前。提示:xiao7…

    2022年10月7日
    0
  • JAVAC原理「建议收藏」

    JAVAC原理「建议收藏」前言本文是对compilation-overview的翻译.如有翻译不对的地方,还望海涵.正文将一组源文件编译成相应的一组类文件的过程并不简单,但是通常可以分为三个阶段。源文件的不同部分可以在“按需”的基础上以不同的速率进行处理。这个过程是由JavaCompiler类来处理的:将命令行上指定的源文件进行读取,解析为语法树,然后将所有外部可见的定义都输入到编译器的…

    2022年5月8日
    39
  • 编程题:分苹果_同学分苹果的小学题

    编程题:分苹果_同学分苹果的小学题题目描述n只奶牛坐在一排,每个奶牛拥有ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出-1。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含一个整数n(1<=n<=100),接下来的一行包含n个整数ai(1&l…

    2022年10月12日
    1
  • 开通阿里云短信服务

    开通阿里云短信服务阿里云短信服务1,阿里云用户权限操作1.1、找到后台放在个人头像上面选择AccessKey管理1.2、选择子用户1.3、创建用户组1.4、给用户组添加权限然后就可以看到你的权限里面多了一个sms的短信权限1.5、创建用户注意!注意!注意点击确认后只可以看到一次密码返回就看不到了注意!注意!注意点击确认后只可以看到一次密码返回就看不到了注意!注意!注意点击确认后只可以看到一次密码返回就看不到了1.6、把用户加入到用户组2、开通阿里云短信服务

    2025年7月9日
    0
  • 数学分析 反常积分(第11章)

    数学分析 反常积分(第11章)一.反常积分的概念相对于普通的定积分(称为正常积分),下面提出2类反常积分1.无穷积分的提出:2.瑕积分的提出:二.无穷积分1.定义:2.性质三.瑕积分1.定义:

    2025年5月27日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号