• 优先队列和堆


    怎么理解优先队列和堆的关系?

    简单来说:堆排序是一种排序算法,利用堆结构完成排序的功能;优先队列是一种数据结构,它是利用堆来实现。
    具体来说,堆排序过程:建堆→堆顶就是最大(或小)值,然后堆顶跟最后一个元素交换→调整堆,反复这个过程,直到堆里面所有元素都交换好;
    而优先队列:建堆→堆顶元素就是优先级最高(或最低)的元素了,可以利用优先级这个数据结构来描述某个问题,比如有一批不断输入的日期,我想要在任何时刻都能以O(1)的速度得到已经输入的日期中的最早日期,那么就可以用优先队列这个数据结构存储日期元素啦。

    怎么理解二叉堆和性质?

    二叉堆可以认为是一个完全二叉树,把元素列成一个树的形状,元素一层一层的往下放,直到放不下为止。

    二叉堆性质:

    简单来说:堆的每个子节点都要小于自己父节点的值,反之亦可,主要是根据自己对于优先级的定义。

    注意:并不是每个父节点都要大于每个子节点,如图第三层右节点16就比第四层左节点19要小,但依然成立二叉堆的性质。可以得出结论:子节点只需小于自身父节点即可。

  • 相关阅读:
    Could not update ICEauthority file /var/lib/gdm/.ICEauthority
    反爬虫中技术点的定义
    反爬虫一些问题
    反爬虫准备
    题解「BZOJ4621 Tc605」
    题解「ZJOI2019 语言」
    题解「清华集训2012 序列操作」
    题解「CF1174F Ehab and the Big Finale」
    题解「CF516D Drazil and Morning Exercise」
    题解「HNOI2018 寻宝游戏」
  • 原文地址:https://www.cnblogs.com/cool-fun/p/12425694.html
Copyright © 2020-2023  润新知