iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java优先队列是怎样的
  • 259
分享到

Java优先队列是怎样的

2023-06-22 06:06:37 259人浏览 泡泡鱼
摘要

Java优先队列是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.优先队列概念优先队列(priority queue)是一种特殊的数据结构。队列中每一个

Java优先队列是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1.优先队列概念

优先队列(priority queue)是一种特殊的数据结构
队列中每一个元素都被分配到一个优先权值,出队顺序按照优先权值来划分
一般有两种出队顺序:高优先权出队低优先权出队
priority queue至少要有两个最基本的ADT:进队出队(按照高优先权或低优先权)

产生原因:同样是为了提高数据处理的效率。试想,要实现优先队列对应的功能,若使用链表或者数组,那么要么先排序再插入,要么先插入再查找最大最小元素。这样一来,入队出队的时间复杂度至少为O(N)。

  • 优先队列出队和入队的时间复杂度均为O(log N)。

  • 优先队列基于二叉堆实现。

2.二叉堆(Heap)

堆是一种特殊的二叉树,性质如下:

  • 每个结点的值都大于或等于其左右孩子结点的值(大顶堆),或每个结点的值都小宇或等于其左右孩子的值(小顶堆)。

  • 必须满足完全二叉树的结构。

完全二叉树和满二叉树

完全二叉树 complete binary tree

叶节点只可能出现在最后两层,且最后一层的叶节点都左对齐
一棵深度为h的完全二叉树

Java优先队列是怎样的

满二叉树 full binary tree

深度为h的满二叉树有(2^h)-1个结点

Java优先队列是怎样的

由二叉堆的定义可以看出,跟结点一定是二叉堆中结点值最大(或最小)的。较大(或较小)的结点靠近根节点

堆的存储结构:

一般情况下,堆用数组来存储,第i个结点的父节点的下标就是(i-1)/2.
如果用层序遍历顺序将大顶堆和小顶堆存入数组,

则关系如图:

Java优先队列是怎样的

堆的重要操作

插入:插入一个元素之后,新元素首先被插入表层(即最后一层尽可能左边的位置),之后再根据堆的性质进行调整。

例:写出一次一个地将10,12,1,14,6,5,8,15,3,9,7,4,11,13和2插入一个初始为空的二叉堆的结果

Java优先队列是怎样的Java优先队列是怎样的

删除:删除总是发生在根处,之后将最后一个元素(即最后一层最右边的元素)拿来填补空缺,之后根据堆的性质进行调整堆的结构。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: Java优先队列是怎样的

本文链接: https://www.lsjlt.com/news/302795.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java优先队列是怎样的
    Java优先队列是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.优先队列概念优先队列(priority queue)是一种特殊的数据结构。队列中每一个...
    99+
    2023-06-22
  • 【Java】PriorityQueue--优先级队列
    目录  一、优先级队列  (1)概念 二、优先级队列的模拟实现 (1)堆的概念  (2)堆的存储方式   (3)堆的创建 堆向下调整 (4)堆的插入与删除 堆的插入  堆的删除 三、常用接口介绍 1、PriorityQueue的特性 2...
    99+
    2023-08-31
    数据结构 java idea 算法 面试
  • Java优先级队列-堆
    Java优先级队列-堆 💐1. 二叉树的顺序存储💐🎃 1.1 存储方式🎃👻1.2 下标关系👻 ...
    99+
    2023-09-04
    java 算法 数据结构
  • Java优先队列 priority queue
    目录1.优先队列概念2.二叉堆(Heap)完全二叉树和满二叉树堆的重要操作1.优先队列概念 优先队列(priority queue)是一种特殊的数据结构。队列中每一个元素都被分配到一...
    99+
    2024-04-02
  • Java的优先队列PriorityQueue详解
    Java中的优先队列是一种基于优先级的队列,元素按照优先级的顺序进行排序,具有较高优先级的元素在队列的头部,较低优先级的元素在队列的...
    99+
    2023-09-06
    Java
  • java的优先级队列怎么使用
    Java的优先级队列可以使用`java.util.PriorityQueue`类来实现。下面是一个使用优先级队列的示例:```jav...
    99+
    2023-09-07
    java
  • MySQL优先队列是什么
    本篇内容介绍了“MySQL优先队列是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 0.先抛...
    99+
    2024-04-02
  • Java优先级队列怎么使用
    Java中的优先级队列可以使用`java.util.PriorityQueue`类来实现。以下是使用优先级队列的基本步骤:1. 导入...
    99+
    2023-08-08
    Java
  • java 堆(优先级队列)详解
    JAVA堆以及优先级队列详解 一、堆的模拟实现1.1堆的概念1.2 堆的性质1.3堆的存储结构1.4堆的创建1.4.1 只有根节点不满足堆的特性1.4.2 不只有根节点不满足堆的特性1.4.2...
    99+
    2023-10-21
    java 数据结构 优先级对列 heap PriorityQueue 堆排序
  • Python - 优先队列(queue.PriorityQueue & heapq)
    目录 什么是优先队列 为什么需要优先队列? 优先队列是个啥? 优先队列的工作原理 Python实现一个优先队列 Python内置库中的queue.PriorityQueue的使用 基本操作 多条件优先级实现 Python内置库中的heapq...
    99+
    2023-09-08
    Python 优先队列
  • Java数据结构优先队列实练
    目录最后一块石头的重量题目描述思路详解代码与结果装满杯子需要的最短总时长题目描述思路详解代码与结果移除石子的最大得分题目描述思路详解代码与结果最后一块石头的重量 题目描述 思路详解...
    99+
    2024-04-02
  • java优先队列自定义排序的方法是什么
    Java中的优先队列(PriorityQueue)默认使用元素的自然顺序进行排序。如果想自定义排序规则,需要通过实现Comparat...
    99+
    2023-09-07
    java
  • kafka优先级队列怎么使用
    Kafka没有内置的优先级队列,但可以通过以下方法实现一个简单的优先级队列:1. 使用Kafka的topic作为队列。2. 将消息的...
    99+
    2023-08-08
    kafka
  • JavaScript实现优先级队列
    目录一、优先级队列介绍二、优先级队列封装一、优先级队列介绍 我们知道,普通的队列插入一个元素,数据会被放在后端,并且需要前面所有的元素都处理完成后才会处理前面的数据。但是优先级队列,...
    99+
    2024-04-02
  • Java堆&优先级队列示例讲解(下)
    目录1.优先级队列1.1 概念1.2 内部原理1.3 操作-入队列1.4 操作-出队列(优先级最高)1.5 借用堆实现优先级队列1.6 测试1.优先级队列 1.1 概念 在很多应用中...
    99+
    2024-04-02
  • java利用Heap堆实现PriorityQueue优先队列
    本篇内容介绍了“java利用Heap堆实现PriorityQueue优先队列”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先做一个优先队列...
    99+
    2023-06-03
  • Java堆&优先级队列示例讲解(上)
    目录1. 二叉树的顺序存储1.1 存储方式1.2 下标关系2. 堆(heap)2.1 概念2.2 操作-(下沉&上浮)本例是最大堆2.3 建堆-完整代码(最大堆)3. 优先级...
    99+
    2024-04-02
  • java数据结构-堆实现优先队列
    目录一、二叉树的顺序存储1.堆的存储方式 2.下标关系 二、堆(heap)1.概念 2.大/小 根堆2.1小根堆2.2大根堆3.建堆操作 3.1向下调整 4.入队操作 4...
    99+
    2024-04-02
  • python 堆和优先队列的使用
    python里面的堆是通过在列表中维护堆的性质实现的。这一点与C++中heap一系列的算法类似,底层是通过堆vector的维护获取堆的性质。 python堆的部分API,其他API查阅文档python_heap_API和 h...
    99+
    2023-01-31
    队列 python
  • Java数据结构之堆(优先队列)的实现
    堆(优先队列)是一种典型的数据结构,其形状是一棵完全二叉树,一般用于求解topk问题。根据双亲节点大于等于孩子节点或双亲节点小于等于孩子节点,可分为大顶堆和小顶堆,本文实现大顶堆。 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作