最小最大堆解析ppt课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《最小最大堆解析ppt课件.ppt》由会员分享,可在线阅读,更多相关《最小最大堆解析ppt课件.ppt(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高级数据结构最小最大堆Min-Max Heap双端优先队列双端优先队列 与与 最小最大堆最小最大堆双端优先队列双端优先队列是一种支持下列操作的数据结构:是一种支持下列操作的数据结构:(1) 插入一个具有任意插入一个具有任意key值的元素值的元素(2) 删除删除key值最大的元素值最大的元素(3) 删除删除key值最小的元素值最小的元素 当只需要支持两个删除操作之一时当只需要支持两个删除操作之一时采用最小堆或最大堆采用最小堆或最大堆 支持以上全部操作支持以上全部操作最小最大堆最小最大堆 定义:最小最大堆定义:最小最大堆是一棵完全二叉树,且其中每是一棵完全二叉树,且其中每个元素有一个个元素有一个k
2、ey数据成员。树的各层交替为最小数据成员。树的各层交替为最小层和最大层。根结点在最小层。设层和最大层。根结点在最小层。设x是最小最大堆是最小最大堆的任意结点。若的任意结点。若x在最小(最大)层上,则在最小(最大)层上,则x中的元中的元素的素的key值在以值在以x为根的子树的所有元素中是最小为根的子树的所有元素中是最小(最大)的。位于最小(最大)层的结点称为(最大)的。位于最小(最大)层的结点称为最小最小(最大)结点(最大)结点。Min-Max Heap n依序插入10和801.2. 3. 4.5.新節點80位於max level且大於其父節點12,故不交換。 6. template void
3、MinMaxHeap:Insert(const Element&x ) if (n = MaxSize ) MinMaxFull( ); return; n+; int p = n/2; / p是新结点的双亲 if (!p) h1 = x; return; / 插入初始时为空的堆 switch (level(p) case MIN: if (x.key hp.key) / 沿着最大层检查 hn=hp; VerifyMax(p, x); else VerifyMin(n, x); / 沿着最小层检查 / switch结束 / Insert结束 函数函数level确定一个结点是位于最小最大堆的最小
4、确定一个结点是位于最小最大堆的最小层,还是位于最大层层,还是位于最大层当当 log2(j + 1) 为偶数时,结点为偶数时,结点j位于最大层,位于最大层,否则位于最小层否则位于最小层 template void MinMaxHeap:VerifyMax (int i, const Element&x ) / 沿着从最大结点i / 到根结点的路径检查最大结点,将x插入正确位置 for (int gp = i/4; gp & (x.key hgp.key); gp /=4) / gp是 i的祖父 hi = hgp;/ 将hgp移到hi i = gp; hi = x; / 将x插入结点i 函数函数V
5、erifyMax从最大结点从最大结点i开始,沿着从结点开始,沿着从结点i到最到最小最大堆的根的路径检查最大结点,查找插入元素小最大堆的根的路径检查最大结点,查找插入元素x的正确结点。在查找过程中,的正确结点。在查找过程中,key值小于值小于x.key的元的元素被移到下一个最大层素被移到下一个最大层 函数函数VerifyMin与与VerifyMax类似,所不同的是,类似,所不同的是,前者从最小结点前者从最小结点i开始,沿着从结点开始,沿着从结点i到根的路径检到根的路径检查最小结点,将元素查最小结点,将元素x插入正确位置。插入正确位置。 分析:分析:由于由于n个元素的最小最大堆有个元素的最小最大堆
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最小 最大 解析 ppt 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内