IT学习站-137zw.com

作者: 杨柳657
查看: 59|回复: 0

more +资源更新Forums

more +随机图赏Gallery

网易课堂马丁的Illustrator(Adobe AI)大师课,90节完整版网易课堂马丁的Illustrator(Adobe AI)大师课,90节完整版
价值9999元 筑龙造价全专业(20191214_114251)精品课程推荐价值9999元 筑龙造价全专业(20191214_114251)精品课程推荐
微专业 - Java高级开发工程师(完整版)微专业 - Java高级开发工程师(完整版)
曾奇峰的心理课精神分析30讲,带你深入潜意识,解密你不...曾奇峰的心理课精神分析30讲,带你深入潜意识,解密你不...
词霸天下之3万词汇速记进阶 入门到精通彻底攻克英语完整版词霸天下之3万词汇速记进阶 入门到精通彻底攻克英语完整版
談鋼琴!?我最大咖!郎朗钢琴大师课~入门到进阶 完整版...談鋼琴!?我最大咖!郎朗钢琴大师课~入门到进阶 完整版...

手写堆

手写堆

[复制链接]
杨柳657 | 显示全部楼层 发表于: 2019-11-14 09:55:02
杨柳657 发表于: 2019-11-14 09:55:02 | 显示全部楼层 |阅读模式
查看: 59|回复: 0


1.定义

堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。
2.性质

1.堆中某个节点的值总是不大于或不小于其父节点的值;

2.堆总是一棵完全二叉树。

将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。
堆是非线性数据结构,相当于一维数组,有两个直接后继。
3.应用思路(手写堆)

以最小堆为例
手写堆  技术博客 w5xd35u4

手写堆  技术博客 cbusxspz

先把数组中的数储存起来
很显然最小的数就在堆顶,假设存储这个堆的数组叫做h的话,最小数就是h[1]。接下来,我们将堆顶的数删除,并将新增加的数23放到堆顶。显然加了新数后已经不符合最小堆的特性,我们需要将新增加的数调整到合适的位置。那如何调整呢?
手写堆  技术博客 j3yuf1wb

我们可以将它和它的两个儿子进行比较,将儿子小的置为堆顶即可,然后依次下调
手写堆  技术博客 o88yvq11

手写堆  技术博客 80egawg8

手写堆  技术博客 4d5wqalp

那如果是要新添加一个数,又如何操作呢?
同前面的,我们可以将新的点加到堆尾,然后上调与它的父节点比较即可。
代码

堆的操作(以大根堆为例)

关于小根堆的操作放在了文章后面。
1.堆的元素下调

[code]void shiftdownmax(int x){    int t,flag=0;    while(x*2

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
137zw.com IT学习站致力于免费提供精品的java技术教程和python技术教程,CCNA书籍/资料/CCNP书籍/资料教程/CCIE书籍/资料/H3C学习/认证/一级建造师考试/微软学习/认证/包括基础教程和高级实战教程,同时也提供分享网站源码下载和互联网相关一系列的技术教程,我们想做的就是让知识分享更有价值!(IT学习站官方唯一域名地址:www.137zw.com 请谨防假冒网站!)本站所有资源全部收集于互联网或网友自行分享,分享目的仅供大家学习与参考,如无意中侵犯您的合法权益,请联系本站管理员进行删除处理!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

浙ICP备19022368号-1|Archiver|手机版|IT学习站-137zw.com

GMT+8, 2020-7-4 17:30 , Processed in 0.366838 second(s), 33 queries .

快速回复 返回顶部 返回列表