[java基础-集合篇]优先队列PriorityQueue结构与源码解析
优先队列PriorityQueue
优先级队列表示为平衡二进制堆:
queue[n] 的两个子级是 queue[2*n+1] 和 queue[2*(n+1)]。
注:左子节点index=2*parentIndex+1,右子节点index=2*parentIndex+2,源码中计算parent位置时就是这样反过来计算的
优先级队列按 comparator 排序,如果 comparator 为 null,则按元素的自然排序排序:对于堆中的每个节点 n 和 n 的每个后代 d,n
PriorityQueue 是一个基于优先级堆的无界优先级队列实现,它可以确保每次出队的元素都是队列中优先级最高(最小的)的元素。
PriorityQueue结构
PriorityQueue结构上是一个基于数组的“完全二叉树”,且“任意节点的值<=子节点的值”,是一个“小顶堆”。
完全二叉树:除最底层节点,其他层都是满的,并且最后一层的所有节点尽可能地靠左排列
PriorityQueue方法
add(E e)
实质是offer(E e)方法,元素首先被添加到数组末尾,然后通过siftUp方法向上调整位置以维持堆的性质
扩容grow(int minCapacity)
peek
取第一个元素
poll
取出第一个元素并删除。移除队列头部元素(即最小元素)时,会将数组最后一个元素移动到头部,然后通过siftDown方法向下调整位置以恢复堆的性质
两个方法和上浮方法一样,只是比较方式不同
PriorityQueue特点
不允许元素为null,无添加顺序(不会按照添加顺序来),自然顺序,线程不安全
使用位移运算代替乘除、提升运算效率。
PriorityQueue资料引用(推荐)
Java【优先级队列】详细图解 / 模拟实现 + 【PriorityQueue】常用方法介绍_java优先队列-CSDN博客
相关文章:
![](https://i-blog.csdnimg.cn/direct/b57302f0a2dc46a0955107d953125a78.png)
[java基础-集合篇]优先队列PriorityQueue结构与源码解析
优先队列PriorityQueue 优先级队列表示为平衡二进制堆: queue[n] 的两个子级是 queue[2*n1] 和 queue[2*(n1)]。 注:左子节点index2*parentIndex1,右子节点index2*parentIndex2,源码中计算parent位置时就是这样反过来计算的 优…...
![](https://www.ngui.cc/images/no-images.jpg)
12. C语言 数组与指针(深入理解)
本章目录: 前言1. 什么是数组?2. 数组的声明与初始化声明数组初始化数组 3. 访问数组元素遍历数组 4. 获取数组长度使用 sizeof 获取长度使用宏定义简化 5. 数组与指针数组名与指针的区别使用指针操作数组 6. 多维数组遍历多维数组 7. 数组作为函数参数8. 高级技巧与…...
![](https://i-blog.csdnimg.cn/direct/12b869b9ca8347d9a084a48c43c44feb.jpeg)
Postman接口测试基本操作
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 Postman-获取验证码 需求:使用Postman访问验证码接口,并查看响应结果。 地址:http://kdtx-test.itheima.net/api/captchaIm…...
![](https://img-blog.csdnimg.cn/direct/67c64049147741939b85489caefbb597.png)
MySQL--2.1MySQL的六种日志文件
大家好,我们来说一下MySQL的6中日志文件。 1.查询日志 查询日志主要记录mysql的select查询的,改配置是默认关闭的。不推荐开启,因为会导致大量查询日志文件储存占用你的空间。 举例查询一下 select * from class; 开启查询日志的命…...
![](https://www.ngui.cc/images/no-images.jpg)
spring task使用
Spring Task 简介 Spring Task 是 Spring 框架原生自带的任务调度框架,它犹如一把瑞士军刀,为开发者提供了丰富多样的功能,助力轻松创建和管理定时任务。相较于其他一些第三方任务调度框架,Spring Task 最大的优势在于其与 Sprin…...
![](https://i-blog.csdnimg.cn/direct/0420b3c4b9e44b759b06eafb13e02603.png)
【FPGA】时序约束与分析
设计约束 设计约束所处环节: 约束输入 分析实现结果 设计优化 设计约束分类: 物理约束:I/O接口约束(例如引脚分配、电平标准设定等物理属性的约束)、布局约束、布线约束以及配置约束 时序约束:设计FP…...
![](https://www.ngui.cc/images/no-images.jpg)
LLM的MoE由什么构成:门控网络,专家网络
LLM的MoE由什么构成:门控网络,专家网络 目录 LLM的MoE由什么构成:门控网络,专家网络专家网络门控网络MoE在联邦学习中的使用及原理专家网络 定义与特点:是一组独立的模型,每个模型都负责处理某个特定的子任务或学习输入空间的特定部分。这些专家可以是简单的线性回归模型…...
![](https://www.ngui.cc/images/no-images.jpg)
HTML-多媒体标签
除了图像,网页还可以放置视频和音频。 1.<video> <video>标签是一个块级元素,用于放置视频。如果浏览器支持加载的视频格式,就会显示一个播放器,否则显示<video>内部的子元素。 <video src"example.…...
![](https://i-blog.csdnimg.cn/direct/ff9a172faa054cfeb334b75bf7ba870c.png)
MySQL笔记大总结20250108
Day2 1.where (1)关系运算符 select * from info where id>1; select * from info where id1; select * from info where id>1; select * from info where id!1;(2)逻辑运算符 select * from info where name"吴佩奇" and age19; select * from info wh…...
![](https://i-blog.csdnimg.cn/direct/a5c5039a429d40818d5797b8bc276d2c.png)
stm32week3
stm32学习 二.外设 8.TIM输出比较 OC(output compare)输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0、翻转操作,用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道 高级定时器的…...
![](https://i-blog.csdnimg.cn/direct/68b308d3e05c44c3a857a6305467a69c.png)
uniapp 的uni.getRecorderManager() 录音功能小记
官网上明确说的是全局唯一并且只是获取对象,所以会导致一个问题就是,当你多个页面要用到这个对象的时候,会发现 onStop 方法会被覆盖,导致调用结果不是自己想要的 解决办法也简单粗暴,在需要用到的界面重新覆盖onStop…...
![](https://i-blog.csdnimg.cn/direct/54ae0a0f4a3949c58de3aa9f55f7ddd5.png)
【面试题】技术场景 4、负责项目时遇到的棘手问题及解决方法
工作经验一年以上程序员必问问题 面试题概述 问题为在负责项目时遇到的棘手问题及解决方法,主要考察开发经验与技术水平,回答不佳会影响面试印象。提供四个回答方向,准备其中一个方向即可。 1、设计模式应用方向 以登录为例,未…...
![](https://i-blog.csdnimg.cn/direct/cf03079d09714b22bc75cec94fdaeb23.png)
RT-DETR代码详解(官方pytorch版)——参数配置(1)
前言 RT-DETR虽然是DETR系列,但是它的代码结构和之前的DETR系列代码不一样。 它是通过很多的yaml文件进行参数配置,和之前在train.py的parser argparse.ArgumentParser()去配置所有参数不同,所以刚开始不熟悉代码的时候可能不知道在哪儿修…...
![](https://i-blog.csdnimg.cn/direct/ed0f1542452c468fa025d32417286284.png)
腾讯云AI代码助手编程挑战赛-凯撒密码解码编码器
作品简介 在CTFer选手比赛做crypto的题目时,一些题目需要自己去解密,但是解密的工具大部分在线上,而在比赛过程中大部分又是无网环境,所以根据要求做了这个工具 技术架构 python语言的tk库来完成的GUI页面设计,通过…...
![](https://i-blog.csdnimg.cn/direct/41fe23646d834c15b7272dfef3da865f.png)
搭建docker私有化仓库Harbor
Docker私有仓库概述 Docker私有仓库介绍 Docker私有仓库是个人、组织或企业内部用于存储和管理Docker镜像的存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部…...
![](https://i-blog.csdnimg.cn/direct/551c00a566ce429fbd45b1e2ae676cc7.png#pic_center)
【Vim Masterclass 笔记09】S06L22:Vim 核心操作训练之 —— 文本的搜索、查找与替换操作(第一部分)
文章目录 S06L22 Search, Find, and Replace - Part One1 从光标位置起,正向定位到当前行的首个字符 b2 从光标位置起,反向查找某个字符3 重复上一次字符查找操作4 定位到目标字符的前一个字符5 单字符查找与 Vim 命令的组合6 跨行查找某字符串7 Vim 的增…...
![](https://www.ngui.cc/images/no-images.jpg)
GIC中断分组介绍(IMX6ull为例)
一、Cortex-A7内核中断 Cortex-A7内核具有多个中断类型,但其中最重要的是复位中断和IRQ(普通中断请求)中断。对于IMX6ULL而言,主要关注的是IRQ中断,因为外部设备和内部事件通常都会触发这类中断。 从左到右 中断控制…...
![](https://i-blog.csdnimg.cn/direct/a68c7153c92a4389b9d2ec3ddb297e31.png)
计算机网络期末复习(知识点)
概念题 在实际复习之前,可以看一下这个视频将网络知识串一下,以便更好地复习:【你管这破玩意叫网络?】 网络规模的分类 PAN(个人区域网络):用于个人设备间的连接,如手机与蓝牙耳机…...
![](https://i-blog.csdnimg.cn/direct/a9e36bd61cb746728bed50efadcd15d7.png)
Apache XMLBeans 一个强大的 XML 数据处理框架
Apache XMLBeans 是一个用于处理 XML 数据的 Java 框架,它提供了一种方式将 XML Schema (XSD) 映射到 Java 类,从而使得开发者可以通过强类型化的 Java 对象来访问和操作 XML 文档。下面将以一个简单的案例说明如何使用 Apache XMLBeans 来解析、生成和验…...
![](https://i-blog.csdnimg.cn/img_convert/a823154f0283714a7911c9e827a61704.jpeg)
飞凌嵌入式i.MX8M Mini核心板已支持Linux6.1
飞凌嵌入式FETMX8MM-C核心板现已支持Linux6.1系统,此次升级不仅使系统功能更加丰富,还通过全新BSP实现了内存性能的显著提升。 基于NXP i.MX8M Mini处理器设计开发的飞凌嵌入式FETMX8MM-C核心板,拥有4个Cortex-A53高性能核和1个Cortex-M4实时…...
![](https://www.ngui.cc/images/no-images.jpg)
【数据链电台】洛克希德·马丁(Lockheed Martin)
洛克希德马丁公司(Lockheed Martin)是全球领先的航空航天、国防、先进技术和安全领域的供应商之一。 公司为美军及盟国军队提供了广泛的通信系统,包括数据链电台和相关的通信系统。 洛克希德马丁的许多产品用于战术通信、卫星通信、电子战、…...
![](https://i-blog.csdnimg.cn/blog_migrate/cover/7bd749109565caaad3799224fad815a4.jpeg)
python关键字(保留字)用法、保留的标识符类(1)
python关键字(保留字)用法、保留的标识符类(1) 一、python保留字(关键字) 1.1、python关键字 以下标识符为保留字,或称 关键字,不可用于普通标识符,即我们不能把它们用作任何标识符名称。 python 保留字(关键字) 关键…...
![](https://www.ngui.cc/images/no-images.jpg)
Ubuntu平台虚拟机软件学习笔记
Ubuntu平台上常见虚拟机软件 VirtualBox [Download]KVM/QEMU 1. VirtualBox 1.1 查看安装版本 VBoxManage -V2. KVM/QEMU KVM: Kernel-based Virtual Machine QEMU: Quick EMUlator 通义千问: virt-manager 既不是QEMU也不是KVM,而是用于管理和创建…...
![](https://i-blog.csdnimg.cn/direct/81d54ec4de9346d1a06c0f865765191c.png)
【数据库系统概论】数据库恢复技术
目录 11.1 事务的基本概念 事务的定义 事务的开始与结束 事务的ACID特性 破坏ACID特性的因素 11.2 数据库恢复概述 11.3 故障的种类 1. 事务内部的故障 2. 系统故障 3. 介质故障 4. 计算机病毒 11.4 恢复的实现技术 如何建立冗余数据 数据转储 登记日志文件 11…...
![](https://i-blog.csdnimg.cn/img_convert/7affe3672b6f5b0bf2dffc6aa6f13f41.gif)
R 语言科研绘图 --- 折线图-汇总
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
![](https://i-blog.csdnimg.cn/img_convert/1604cb33ceaa47bf22adddcf417134f7.png)
基于 Python 和 OpenCV 的人脸识别上课考勤管理系统
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
![](https://i-blog.csdnimg.cn/direct/d3fa311d1c5d40d196293598074c906d.png)
工业 4G 路由器赋能远程医疗,守护生命线
在医疗领域,尤其是偏远地区的医疗救治场景中,工业 4G 路由器正发挥着无可替代的关键作用,宛如一条坚韧的 “生命线”,为守护患者健康持续赋能。 偏远地区医疗资源相对匮乏,常常面临着专业医生短缺、诊疗设备有限等困境…...
![](https://i-blog.csdnimg.cn/direct/05b316c484c8400a83bd669a49ba08eb.png)
Windows安装Ubuntu子系统图形化工具
Windows如何使用WSL方式安装Ubuntu,可以参考:https://blog.csdn.net/xiangzhihong8/article/details/145044370。接下来,我们说一下如何安装Ubuntu的图形化系统。 为了测试,这里介绍两种常见的图形化工具。第一种为VcXsrv Gnome…...
![](https://i-blog.csdnimg.cn/img_convert/13fcbf60a42ba19f846d08708da17283.png)
MiniMind - 从0训练语言模型
文章目录 一、关于 MiniMind 📌项目包含 二、📌 Environment三、📌 Quick Start Test四、📌 Quick Start Train0、克隆项目代码1、环境安装2、如果你需要自己训练3、测试模型推理效果 五、📌 Data sources1、分词器&am…...
![](https://i-blog.csdnimg.cn/direct/7a04a16fd3e34f758e0de1775828c3c5.png)
sql正则表达
MySQL中的正则表达式使用REGEXP关键字来指定匹配模式。常见的正则表达式符号包括: .:匹配任意单个字符 ^:匹配字符串的开始位置 $:匹配字符串的结束位置 *:匹配前面的字符或字符集出现零次或多次 :匹配前面…...
![](/images/no-images.jpg)
ghost系统怎么卸载wordpress/百度推广一年大概需要多少钱
B) 寻址方式种类尽量多,指令功能尽可能强。C)选取使用率高的一些简单指令,以及很有用但不复杂的指令。D)增加寄存器数目,尽量减少访存操作。36、14、移位操作中移出的位存入()A零标志位 B 溢出标志位 C 进位标志位 D 符号位37、15、零地址指令…...
武昌网站制作公司/竞价推广网络推广运营
我是一点都不会python,但为了写爬虫,所以就硬干了。。。 1.windows下搭建python环境直接参考这个就行了安装指南 2.透过pip安装套件:1)pip install requests;2)pip install BeautifulSoup4 具体操作:自己打开cmd,敲进pip install requests,…...
![](/images/no-images.jpg)
flash代码做网站教程/上海公关公司
计算机编程术语: 参考网址:https://blog.csdn.net/linear_luo/article/details/52318820 application 应用程式 应用、应用程序 application framework 应用程式框架、应用框架 应用程序框架 architecture 架构、系统架构 体系结构 argument 引数&am…...
![](/images/no-images.jpg)
石家庄大型网络公司/seo优化推广技巧
python标准库sys sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互,如:python解释器。 sys模块的常见函数列表(import sys)ÿ…...
![](https://img-blog.csdnimg.cn/20200604130453704.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FsaXZlbjE=,size_16,color_FFFFFF,t_70)
三晋联盟做网站需要多钱/江苏做网站的公司有哪些
------------------------------------------------------------------------------------------------------------------------- 1.数据流的处理方法: app.post(/,(req,res,next)>{// ejs可以不带后缀,nunjunks必须要带后缀let data;// 二进制数据流的拼接 r…...
![](/images/no-images.jpg)
网站建设专业/营业推广是什么意思
在c语言当中解决字符串当中某个字符或者数字时,经常用到sscanf,的确也比较好用,大部分正则问题都能解决,官方使用方法介绍如下: 函数语法 int sscanf( const char *buffer, const char *format, [ argument ] ... ); 参数编辑 播报 buffer 存储的数据 format…...