zoukankan      html  css  js  c++  java
  • 优先队列和堆

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

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

    怎么理解二叉堆和性质?

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

    二叉堆性质:

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

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

  • 相关阅读:
    省市联级(DataReader绑定)
    中国六大最忙和六大最懒城市
    JavaScript极品小日历
    人生最重要的十个健康伴侣
    JavaScript 中的replace方法
    在VBScript中使用类
    使用嵌套触发器
    MM上街前的折腾(有趣)
    浅谈ASP中Web页面间的数据传递
    图片容错处理
  • 原文地址:https://www.cnblogs.com/cool-fun/p/12425694.html
Copyright © 2011-2022 走看看