美文网首页
Day1--堆和优先权队列

Day1--堆和优先权队列

作者: Endeavor_ac89 | 来源:发表于2019-04-21 21:21 被阅读0次

·堆

一、堆的定义:

    堆是一颗完全二叉树。

二、分类:

    分为最大堆和最小堆。最大堆是树中每个节点的值都大于或等于其左右孩子节点的值的堆,最小堆是树中每个节点的值都小于或者等于其左右孩子节点的值的堆。

三、向下调整运算

    假设构造最大堆,我们使用向下调整运算来实现。

    向下调整运算:在原本已是最大堆的树中插入新的值后,新加入的值可能会影响树的状态,需要对其进行调整。一般是先比较新的值与父节点的大小关系,按此步骤往上调整。调整完后在进行二次调整,还原树的最大堆的形态。

//代码展示

void AdjustHeap(int Heap[] ,int s, int m){

//假设Heap[s+1...m]已是最大堆,现将其调整为Heap[s...m]为根的最大堆

    int Temp=Heap[s];

    for(j=2*s;j<=m;j*+2){

        if(j<m&&Heap[j]<Heap[j+1])

            j++;

        if(Temp>Heap[j])break;

        Heap[s]=Heap[j];

        s=j;

}

    Heap[s]=Temp;

}

·优先权队列

    优先权队列是0个或者多个元素的集合,每个元素都有一个优先权或值。我们主要对优先权队列执行(1)查找;(2)插入新元素;(3)删除。

堆是一种能有效实现优先权队列的一种数据结构。对优先权队列执行删除操作时,最小堆删除的时最小的元素,最大堆删除的是最大的元素,对应的也就是堆顶元素。

相关文章

  • Day1--堆和优先权队列

    ·堆 一、堆的定义: 堆是一颗完全二叉树。 二、分类: 分为最大堆和最小堆。最大堆是树中每个节点的值都大于...

  • 堆与哈夫曼树与哈夫曼编码

    堆 什么是堆 优先队列(Priority Queue):特殊的“队列”,取出元素的顺序是 依照元素的优先权(关键字...

  • Heap和PriorityQueue

    这篇文章介绍堆的实现、插入和删除,以及堆的应用——优先权队列。其中的截图来自这个视频。 Heaps (最小)堆是完...

  • 4.3 堆

    什么是堆?heap 优先队列(Priority Queue):特殊的“队列”,取出元素的顺序是 依照元素的优先权(...

  • 第五讲-树(下)

    树(下) 堆 优先队列:特殊的“队列”,取出元素的顺序是一招元素的“优先权(关键字)”大小,而不是队列的先后顺序。...

  • 5.1 堆

    1. 什么是堆 优先队列:一种特殊的“队列”,取出元素的顺序是依照元素的优先权大小,而不是元素进入队列的先后顺序。...

  • 数据结构-堆

    定义 优先队列:一种特殊的队列,队列中元素出栈的顺序是按照元素的优先权大小,而不是元素入队的先后顺序。 堆的特性:...

  • 数据结构小结

    堆Heap 定义优先队列(Priority Queue): 取出元素的大小是根据元素的优先权(关键字)大小最大堆(...

  • 数据结构——优先队列

    一、优先队列 优先队列顾名思义,就是优先权最大的排在队列的头部,而优先权的判断是根据对象的compare方法比较获...

  • 优先队列:取出元素的顺序是依照元素的优先权大小,而不是元素进入队列的先后顺序。二叉堆结构性:由数组表示的完全二叉树...

网友评论

      本文标题:Day1--堆和优先权队列

      本文链接:https://www.haomeiwen.com/subject/kcnlgqtx.html