Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >堆(优先级队列 PriorityQueue)

堆(优先级队列 PriorityQueue)

作者头像
GeekLiHua
发布于 2025-01-21 07:48:17
发布于 2025-01-21 07:48:17
10300
代码可运行
举报
文章被收录于专栏:JavaJava
运行总次数:0
代码可运行

堆(优先级队列 PriorityQueue)

通过题目讲解

题目链接博客合并果子(优先级队列)

提交代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.io.*;
import java.util.*;

public class Main
{	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		PriorityQueue<Integer> q = new PriorityQueue<Integer>();
		int n = in.nextInt();
		for (int i = 0; i < n; ++ i)
		{
			q.add(in.nextInt());
		}
		int sum = 0;
		while(q.size()>1)
		{
			int a = q.poll();
			int b = q.poll();
			sum += a + b;
			q.add(a + b);
		}
		System.out.println(sum);
	}
}

常用方法

和Queue一样

参考文档队列(Queue)

遍历方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
		PriorityQueue<Integer> pqueue = new PriorityQueue<Integer>();			
		pqueue.add(100);
		pqueue.add(10);
		pqueue.add(11);
		pqueue.add(1);
		pqueue.add(646);
		System.out.println(pqueue);
		/*[1, 10, 11, 100, 646]*/
		
		for (Integer it : pqueue)
		{
			System.out.print(it + " ");
		}
		/*1 10 11 100 646 */
		System.out.println();
		Iterator<Integer> it = pqueue.iterator();
		while(it.hasNext())
		{
			System.out.print(it.next() + " ");
		}
		/*1 10 11 100 646 */
	}

排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
		// 默认排序规则是升序排列
		// 可以自定义排序规则
		PriorityQueue<Integer> pqueue = new PriorityQueue<Integer>(new Comparator<Integer>() {

			@Override
			public int compare(Integer o1, Integer o2) {
				int num = 0;
				if (o1 > o2) num = -1;
				else num = 1;
				return num;
			}
			
		});			
		pqueue.add(100);
		pqueue.add(10);
		pqueue.add(11);
		pqueue.add(1);
		pqueue.add(646);
		System.out.println(pqueue);
		/*[646, 100, 11, 1, 10]*/
	}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Expedition(优先队列)
import java.util.Comparator; import java.util.PriorityQueue; import java.util.Queue; import java.util.Scanner; /** * Expedition 你需要驾驶一辆卡车行驶L单位距离。最开始时,卡车上有P单位的汽油。卡车上每开1单位距离需要消耗1单位的汽油。 * 如果在途中车上的汽油耗尽,卡车就无法继续前行,因而无法到达终点。在途中一共有N个加油站。 * 第i个加油站在距离起点Ai单位的地方,最
砖业洋__
2023/05/06
1340
合并果子(优先级队列)
假定每个果子重量都为 1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使达达耗费的体力最少,并输出这个最小的体力耗费值。
GeekLiHua
2025/01/21
720
【数据结构】关于优先级队列(堆),你了解内部原理吗?(超详解!!!)
前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适。
用户11288949
2024/09/24
2770
【数据结构】关于优先级队列(堆),你了解内部原理吗?(超详解!!!)
Java优先级队列PriorityQueue「建议收藏」
相较于普通先进先出队列来说,优先级队列会根据优先级进行由高到低排序,出队时优先级高的先出队。
全栈程序员站长
2022/11/09
3740
PriorityQueue使用
C++默认大顶堆,java默认小顶堆 import java.util.Comparator; import java.util.Iterator; import java.util.PriorityQueue; import java.util.Queue; public class PriorityQueueTest { public static class student { private String name; private int stu_num; public stud
砖业洋__
2023/05/06
1050
数据结构-6.优先级队列
本篇博客给大家带来的是 优先级队列(堆) 的知识点, 其中包括 建堆时间复杂度的求解, 堆的向下调整算法, 向上调整算法, 堆的插入,删除操作 ...... 至于 PriorityQueue的扩容,  面试题 top-k问题 以及 堆排序 在后序会专门出一篇文章.
用户11369350
2024/11/19
840
数据结构-6.优先级队列
《Java初阶数据结构》----7.<优先级队列PriorityQueue>
在上文中,我们已经讲到了优先级队列的概念。本篇文章,我们将更加深入的讲解优先级队列。
用户11288958
2024/09/24
1230
《Java初阶数据结构》----7.<优先级队列PriorityQueue>
Java一分钟之-高级集合框架:优先队列(PriorityQueue)
在Java集合框架中,PriorityQueue是一个非常特殊的队列实现,它不遵循典型的先进先出(FIFO)规则,而是按照元素的自然排序顺序或提供的比较器来对元素进行排序。本文将深入解析PriorityQueue,探讨常见问题、易错点及避免策略,并附上实用的代码示例。
Jimaks
2024/05/23
1.6K0
Java一分钟之-高级集合框架:优先队列(PriorityQueue)
队列(Queue)
简介:本文从题目出发,带领大家快速入门,Java中的自带API,Queue的使用。
GeekLiHua
2025/01/21
1270
队列(Queue)
基于堆实现的优先级队列:PriorityQueue 解决 Top K 问题
1、认识 PriorityQueue PriorityQueue是从JDK1.5开始提供的新的数据结构接口,它是一种基于优先级堆的极大优先级队列。优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列(参阅 Comparable),也可以根据 Comparator 来指定,这取决于使用哪种构造方法。优先级队列不允许 null 元素。依靠自然排序的优先级
用户1177713
2018/02/24
2.5K0
【算法】堆、优先级队列
PriorityQueue<> heap = new PriorityQueue<>((a,b) -> a-b); 小根堆 差为负数,小的a放前面
三三是该溜子
2025/01/25
940
【算法】堆、优先级队列
PriorityQueue详解
PriorityQueue 一个基于优先级的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。该队列不允许使用 null 元素也不允许插入不可比较的对象(没有实现Comparable接口的对象)。 PriorityQueue 队列的头指排序规则最小那哥元素。如果多个元素都是最小值则随机选一个。 PriorityQueue 是一个无界队列,但是初始的容量(实际是一个Object[]),随着不断向优先级队列添加元素,其容量会自动扩容,无需指定容量增加策略的细节。
全栈程序员站长
2022/08/11
9550
PriorityQueue详解
蓝桥杯-染色时间(优先级队列)
之后变成彩色, 然后将自己上下左右四 个方向相邻的方格触发染色。每个方格只能被触发染色一次, 第一次触发之后 的触发为无效触发。
别团等shy哥发育
2023/03/20
5300
蓝桥杯-染色时间(优先级队列)
【java-数据结构】Java优先级队列揭秘:堆的力量让数据处理飞起来
在开发中,尤其是需要处理大量数据或者进行任务调度的场景下,如何高效地管理数据的顺序和优先级是一个至关重要的问题。Java 提供了优先级队列(PriorityQueue),它基于堆(Heap)实现,能够以高效的方式管理数据的优先级。在本文中,我们将深入探讨优先级队列的工作原理,特别是堆的作用,并通过示例代码帮助你更好地理解其应用。
学无止尽5
2025/03/05
1800
【java-数据结构】Java优先级队列揭秘:堆的力量让数据处理飞起来
【数据结构】关于Java对象比较,以及优先级队列的大小堆创建你了解多少???
上期博客讲了优先级队列,优先级队列在插入元素时有个要求:插入的元素不能是null或者元素之间必须要能够进行比较,为了简单起见,我们只是插入了Integer类型,那优先级队列中能否插入自定义类型对象呢?
用户11288949
2024/09/24
1090
【数据结构】关于Java对象比较,以及优先级队列的大小堆创建你了解多少???
PriorityQueue优先级队列
代码链接在GitHub:堆_练习模拟实现2 · Yjun6/DataStructrue@98faae5 (github.com)
用户10788736
2023/10/16
2410
PriorityQueue优先级队列
切金条(哈夫曼、贪心)
这里用到的是哈夫曼编码原理,关于这个知识点的讲解可以看这位博主的,我觉得写的很好点击打开链接
砖业洋__
2023/05/06
1270
PriorityQueue(优先级队列总结)
堆是一棵完全二叉树,因此可以层序的规则采用顺序的方式来高效存储, 注意:对于非完全二叉树,则不适合使用顺序方式进行存储,因为为了能够还原二叉树,空间中须要存储空节点,就会导致空间利用率比较低
全栈程序员站长
2022/08/14
3220
PriorityQueue(优先级队列总结)
挑战程序竞赛系列(9):2.4优先队列
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014688145/article/details/72773026
用户1147447
2019/05/26
3400
介绍一下PriorityQueue,以及优先队列实现大小根堆
PriorityQueue优先队列 import java.util.PriorityQueue;它是java.util包下的
名字是乱打的
2022/05/13
7660
介绍一下PriorityQueue,以及优先队列实现大小根堆
相关推荐
Expedition(优先队列)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验