【数据结构】—— 优先队列

前言

各位同学大家候,时隔数月未更博,为了表示依然健在,出来冒个泡。
这里写图片描述
正巧,最近刚好在项目中,用到了优先队列的数据结构,趁热给大家分享一下这里写图片描述,同时帮自己理一下。
废话少说,来互相伤害吧!
这里写图片描述


介绍

首先,关于优先队列,下面做一个简单的介绍。

  1. 什么是优先队列?
    优先队列是一种数据结构,用于处理将数据插入队列中,每次能够快速、高效的取出最大元素的数据机构。
    可以用下方表格简单介绍:
                        获取元素            特点
    队列            最新的元素       先进后出
    栈               最老的元素       先进先出
    优先队列     最大的元素       插入新元素时排序

  2. 为什么需要使用优先队列?
    优先队列主要提供两个函数:插入和删除并获得最大元素。
    那有同学会问了:那这跟数列进行排序之后,获取最大值有什么区别呢?
    优先队列的优势就是:【部分排序】。它可以对数组进行部分排序,同时保证最大的值放到数组的第一个位置(实际上是第二个位置,也就是下标1,后面将会解释)。
    换句话说,就是能减少排序的比较次数,同时能够保证拿到最大的元素。

  3. 优先队列的使用场景。
    电脑中的每个进程的优先级不同,而电脑进程的执行顺序是从高到低,此时获取最高优先级的进程可以用到优先队列;
    Android手机中,系统给电话、短信的优先级,一般比非系统级App(游戏等)的优先级高。

  4. 如何实现一个优先队列?
    优先队列的内部构成方式有多种,分别有:数组(无序)、数组(有序)和链表的方式。
    优先队列提供的主要功能有两个:【插入元素】和【删除最大元素】。那么使用上面几种方式,有哪些不同点呢?
    下方我们用一个表格进行简单的说明:

                                插入元素            运行时间的增长数量级(最坏情况)            删除最大元素            增长数量级
    数组(有序)   插入时进行排序                               N                            取第一个或最后一个元素              1
    数组(无序)   插入时不进行排序                            1                            使用排序算法查找最大元素           N
    关于链表,与数组一样,要么就在插入时排序,要么就在去除最大元素时使用排序算法查找最大元素。

    由上方表图可以看出

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值