首页 > 其他分享 >优先队列

优先队列

时间:2023-03-23 20:56:17浏览次数:32  
标签:Node 优先 队列 priorityQueue int public

什么是优先队列:

优先队列就好比会员制的队列,有优先级这一特殊属性,根据优先级的高低来确定出队顺序

优先队列也是一种抽象数据类型。优先队列中的每个元素都有优先级,而优先级高(或者低)的将会先出队,而优先级相同的则按照其在优先队列中的顺序依次出队。

也就是说优先队列,通常会有下面的操作:

这样的话,我们完全可以使用链表来实现,例如以O(1)复杂度插入,每次在表头插入,而以O(N)复杂度执行删除最小元素;或者以O(N)复杂度插入,保持链表有序,而以O(1)复杂度删除。

然而优先队列往往使用堆来实现,以至于通常说堆时,就自然而然地想到了优先队列。

具体使用方法(实现方法也就是上述提到到的堆,本文只对使用进行简单说明):

import java.util.PriorityQueue;

public class 优先队列 {

	public static void main(String[] args) {

		Node a = new Node(0, 0);
		Node b = new Node(100, 999);
		PriorityQueue<Node> priorityQueue = new PriorityQueue<>();
		priorityQueue.add(b);
		System.out.println("我是b我先入队");
		priorityQueue.add(a);
		System.out.println("我是a我后入队");
		while (!priorityQueue.isEmpty()) {
			System.out.println(priorityQueue.remove());
		}
	}

}

class Node implements Comparable<Node> {
	int u;
	int v;

	public Node(int u, int v) {
		super();
		this.u = u;
		this.v = v;
	}

	@Override
	public String toString() {
		return "Node [u=" + u + ", v=" + v + "]";
	}

	@Override
	public int compareTo(Node o) {
		return this.u - o.u;// 数小的在前面
	}
}

image-20230323204745006

标签:Node,优先,队列,priorityQueue,int,public
From: https://www.cnblogs.com/ChuenSan/p/17249395.html

相关文章

  • 05. 队列
    一、什么是队列  队列(Queue)是具有一定约束的线性表,它只能在一端插入(入队,AddQ)而在另一端删除(出队,DeleteQ)。它具有先进先出(FIFO)的特性。  队列的抽象类型描述:类型......
  • maven中的优先级问题
    特别注意:maven会根据pom文件声明的顺序加载,如果先声明了B,后声明了C那么B的优先级高于C的优先级MAVEN依赖的优先原则maven依赖的优先原则1.依赖最短路径优先原则一个项目......
  • 消息队列之日志处理
    消息队列之日志处理应用场景:大型电商网站(淘宝、京东、国美、苏宁...)、App(抖音、美团、滴滴等)等需要分析用户行为,要根据用户的访问行为来发现用户的喜好以及活跃情况,需要......
  • 消息队列之系统解耦
    消息队列之系统解耦A系统产生一条数据,发送到MQ里面去,哪个系统需要数据自己去MQ里面消费。如果新系统需要数据,直接从MQ里消费即可;如果某个系统不需要这条数据了,就......
  • Spring MVC视图解析器:配置多个视图解析器的优先级
    [color=red]问题[/color]在SpringMVC应用程序中,我们经常需要应用一些视图解析器策略来解析视图名称。例如,联合使用三个视图解析器:InternalResourceViewResolver、Resourc......
  • 一种异步延迟队列的实现方式
    作者:京东零售张路瑶1.应用场景目前系统中有很多需要用到延时处理的功能:支付超时取消、排队超时、短信、微信等提醒延迟发送、token刷新、会员卡过期等等。通过延时处理,......
  • 为工作排好优先级
    工作,是干不完的,因此我们需要分清轻重缓急,为它们划分优先级,这样才不至于让自己手忙脚乱。给手头的事情排上正确的优先级,是一项很重要的工作能力。优先级有很多考量,并不是......
  • 如何防止队列中的信息丢失?
    如何防止队列中的信息丢失?我们先用两个名词来概括往队列中放入消息的行为和处理队列中消息的行为,称之为生产者与消费者。应用场景:订单请求过来,为了快速的响应给前端,需......
  • 为什么不建议用redis做消息队列
    redis的list做队列其实还是很爽的,简单,一个读一个写即可,而且基本每个系统都会使用redis,接入没有附加成本,也没有额外的学习成本。如果需要订阅模型,写三个队列,然后三个消费者......
  • 消息队列简介
    什么是消息队列消息队列是一种异步的服务间通信方式,适用于无服务器和微服务架构。消息在被处理和删除之前一直存储在队列上。每条消息仅可被一位用户处理一次。消息队列......