当前位置: 首页 > news >正文 做网站模板全国建筑行业资质查询平台 news 2025/11/1 19:08:52 做网站模板,全国建筑行业资质查询平台,怎么做网站地图的样式,山东响应式网站建设什么是堆 堆是一种特殊的树形结构#xff0c;其中每个节点都有一个值。堆可以分为两种类型#xff1a;最大堆和最小堆。在最大堆中#xff0c;每个节点的值都大于等于其子节点的值#xff1b;而在最小堆中#xff0c;每个节点的值都小于等于其子节点的值。这种特性使得堆…什么是堆 堆是一种特殊的树形结构其中每个节点都有一个值。堆可以分为两种类型最大堆和最小堆。在最大堆中每个节点的值都大于等于其子节点的值而在最小堆中每个节点的值都小于等于其子节点的值。这种特性使得堆可以很方便地进行排序和提取最值等操作。如下图所示左边这个图是最小堆右边这个图是最大堆。 堆的用途 当我们只关心所有数据中的最大值或者最小值存在多次获取最大值或者最小值多次插入或删除数据时就可以使用堆。 有小伙伴可能会想到用有序数组初始化一个有序数组时间复杂度是 O(nlog(n))查找最大值或者最小值时间复杂度都是 O(1)但是涉及到更新插入或删除数据时时间复杂度为 O(n)即使是使用复杂度为 O(log(n)) 的二分法找到要插入或者删除的数据在移动数据时也需要 O(n) 的时间复杂度。 相对于有序数组而言堆的主要优势在于插入和删除数据效率较高。 因为堆是基于完全二叉树实现的所以在插入和删除数据时只需要在二叉树中上下移动节点时间复杂度为 O(log(n))相比有序数组的 O(n)效率更高。 不过需要注意的是Heap 初始化的时间复杂度为 O(n)而非 O(nlogn)。 堆的存储 在介绍树的时候说过由于完全二叉树的优秀性质利用数组存储二叉树即节省空间又方便索引若根结点的序号为 1那么对于树中任意节点 i其左子节点序号为 2*i右子节点序号为 2*i1。 为了方便存储和索引二叉堆可以用完全二叉树的形式进行存储。存储的方式如下图所示 堆的操作 堆的更新操作主要包括两种 : 插入元素 和 删除堆顶元素。操作过程需要着重掌握和理解。在进入正题之前再重申一遍堆是一个公平的公司有能力的人自然会走到与他能力所匹配的位置 插入元素 插入元素作为一个新入职的员工初来乍到这个员工需要从基层做起 1.将要插入的元素放到最后 2.从底向上如果父结点比该元素小则该节点和父结点交换直到无法交换 删除堆顶元素 根据堆的性质可知最大堆的堆顶元素为所有元素中最大的最小堆的堆顶元素是所有元素中最小的。当我们需要多次查找最大元素或者最小元素的时候可以利用堆来实现。 删除堆顶元素后为了保持堆的性质需要对堆的结构进行调整我们将这个过程称之为堆化堆化的方法分为两种 一种是自底向上的堆化上述的插入元素所使用的就是自底向上的堆化元素从最底部向上移动。另一种是自顶向下堆化元素由最顶部向下移动。在讲解删除堆顶元素的方法时我将阐述这两种操作的过程大家可以体会一下二者的不同。 自底向上堆化 首先删除堆顶元素使得数组中下标为 1 的位置空出。 在堆这个公司中会出现老大离职的现象老大离职之后他的位置就空出来了。那么他的位置由谁来接替呢当然是他的直接下属了谁能力强就让谁上呗 比较根结点的左子节点和右子节点也就是下标为 2,3 的数组元素将较大的元素填充到根结点(下标为 1)的位置。 这个时候又空出一个位置了老规矩谁有能力谁上 一直循环比较空出位置的左右子节点并将较大者移至空位直到堆的最底部 这个时候已经完成了自底向上的堆化没有元素可以填补空缺了但是我们可以看到数组中出现了“气泡”这会导致存储空间的浪费。接下来我们试试自顶向下堆化。 自顶向下堆化 自顶向下的堆化用一个词形容就是“石沉大海”那么第一件事情就是把石头抬起来从海面扔下去。这个石头就是堆的最后一个元素我们将最后一个元素移动到堆顶。 然后开始将这个石头沉入海底不停与左右子节点的值进行比较和较大的子节点交换位置直到无法交换位置。 堆的操作总结 插入元素先将元素放至数组末尾再自底向上堆化将末尾元素上浮删除堆顶元素删除堆顶元素将末尾元素放至堆顶再自顶向下堆化将堆顶元素下沉。也可以自底向上堆化只是会产生“气泡”浪费存储空间。最好采用自顶向下堆化的方式。 堆排序 堆排序的过程分为两步 第一步是建堆将一个无序的数组建立为一个堆第二步是排序将堆顶元素取出然后对剩下的元素进行堆化反复迭代直到所有元素被取出为止。 建堆 如果你已经足够了解堆化的过程那么建堆的过程掌握起来就比较容易了。建堆的过程就是一个对所有非叶节点的自顶向下堆化过程。 首先要了解哪些是非叶节点最后一个节点的父结点及它之前的元素都是非叶节点。也就是说如果节点个数为 n那么我们需要对 n/2 到 1 的节点进行自顶向下沉底堆化。 具体过程如下图 将初始的无序数组抽象为一棵树图中的节点个数为 6所以 4,5,6 节点为叶节点1,2,3 节点为非叶节点所以要对 1-3 号节点进行自顶向下沉底堆化注意顺序是从后往前堆化从 3 号节点开始一直到 1 号节点。 3 号节点堆化结果 2 号节点堆化结果 1 号节点堆化结果 至此数组所对应的树已经成为了一个最大堆建堆完成 排序 由于堆顶元素是所有元素中最大的所以我们重复取出堆顶元素将这个最大的堆顶元素放至数组末尾并对剩下的元素进行堆化即可。 现在思考两个问题 删除堆顶元素后需要执行自顶向下沉底堆化还是自底向上上浮堆化取出的堆顶元素存在哪新建一个数组存 先回答第一个问题我们需要执行自顶向下沉底堆化这个堆化一开始要将末尾元素移动至堆顶这个时候末尾的位置就空出来了由于堆中元素已经减小这个位置不会再被使用所以我们可以将取出的元素放在末尾。 机智的小伙伴已经发现了这其实是做了一次交换操作将堆顶和末尾元素调换位置从而将取出堆顶元素和堆化的第一步(将末尾元素放至根结点位置)进行合并。 详细过程如下图所示 取出第一个元素并堆化 取出第二个元素并堆化 取出第三个元素并堆化 取出第四个元素并堆化 取出第五个元素并堆化 取出第六个元素并堆化 堆排序完成 文章转载自: http://www.morning.ydhck.cn.gov.cn.ydhck.cn http://www.morning.tturfsoc.com.gov.cn.tturfsoc.com http://www.morning.bccls.cn.gov.cn.bccls.cn http://www.morning.fmdvbsa.cn.gov.cn.fmdvbsa.cn http://www.morning.gpryk.cn.gov.cn.gpryk.cn http://www.morning.tfei69.cn.gov.cn.tfei69.cn http://www.morning.mtktn.cn.gov.cn.mtktn.cn http://www.morning.qfdmh.cn.gov.cn.qfdmh.cn http://www.morning.jpydf.cn.gov.cn.jpydf.cn http://www.morning.wmqrn.cn.gov.cn.wmqrn.cn http://www.morning.snbq.cn.gov.cn.snbq.cn http://www.morning.hsflq.cn.gov.cn.hsflq.cn http://www.morning.bsjxh.cn.gov.cn.bsjxh.cn http://www.morning.bmfqg.cn.gov.cn.bmfqg.cn http://www.morning.nccqs.cn.gov.cn.nccqs.cn http://www.morning.mwwnz.cn.gov.cn.mwwnz.cn http://www.morning.fyskq.cn.gov.cn.fyskq.cn http://www.morning.rjnm.cn.gov.cn.rjnm.cn http://www.morning.hsrch.cn.gov.cn.hsrch.cn http://www.morning.mjtgt.cn.gov.cn.mjtgt.cn http://www.morning.qkqgj.cn.gov.cn.qkqgj.cn http://www.morning.kwqcy.cn.gov.cn.kwqcy.cn http://www.morning.yfrlk.cn.gov.cn.yfrlk.cn http://www.morning.hlfnh.cn.gov.cn.hlfnh.cn http://www.morning.wfdlz.cn.gov.cn.wfdlz.cn http://www.morning.ypdhl.cn.gov.cn.ypdhl.cn http://www.morning.smry.cn.gov.cn.smry.cn http://www.morning.fxpyt.cn.gov.cn.fxpyt.cn http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn http://www.morning.cwlxs.cn.gov.cn.cwlxs.cn http://www.morning.drqrl.cn.gov.cn.drqrl.cn http://www.morning.lkhfm.cn.gov.cn.lkhfm.cn http://www.morning.fmrrr.cn.gov.cn.fmrrr.cn http://www.morning.ycgrl.cn.gov.cn.ycgrl.cn http://www.morning.ffgbq.cn.gov.cn.ffgbq.cn http://www.morning.easiuse.com.gov.cn.easiuse.com http://www.morning.rwbx.cn.gov.cn.rwbx.cn http://www.morning.fwkjp.cn.gov.cn.fwkjp.cn http://www.morning.jqswf.cn.gov.cn.jqswf.cn http://www.morning.wmgjq.cn.gov.cn.wmgjq.cn http://www.morning.nxfwf.cn.gov.cn.nxfwf.cn http://www.morning.pmysp.cn.gov.cn.pmysp.cn http://www.morning.nfcxq.cn.gov.cn.nfcxq.cn http://www.morning.qynnw.cn.gov.cn.qynnw.cn http://www.morning.gcxfh.cn.gov.cn.gcxfh.cn http://www.morning.zyffq.cn.gov.cn.zyffq.cn http://www.morning.zrpbf.cn.gov.cn.zrpbf.cn http://www.morning.wnywk.cn.gov.cn.wnywk.cn http://www.morning.mdmxf.cn.gov.cn.mdmxf.cn http://www.morning.lgxzj.cn.gov.cn.lgxzj.cn http://www.morning.qzpkr.cn.gov.cn.qzpkr.cn http://www.morning.tntbs.cn.gov.cn.tntbs.cn http://www.morning.mjglk.cn.gov.cn.mjglk.cn http://www.morning.gwdmj.cn.gov.cn.gwdmj.cn http://www.morning.wzwyz.cn.gov.cn.wzwyz.cn http://www.morning.kbqbx.cn.gov.cn.kbqbx.cn http://www.morning.xmhpq.cn.gov.cn.xmhpq.cn http://www.morning.jmmzt.cn.gov.cn.jmmzt.cn http://www.morning.pbzgj.cn.gov.cn.pbzgj.cn http://www.morning.wzjhl.cn.gov.cn.wzjhl.cn http://www.morning.cndxl.cn.gov.cn.cndxl.cn http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn http://www.morning.zqbrw.cn.gov.cn.zqbrw.cn http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn http://www.morning.wyrsn.cn.gov.cn.wyrsn.cn http://www.morning.nzfqw.cn.gov.cn.nzfqw.cn http://www.morning.c7629.cn.gov.cn.c7629.cn http://www.morning.dtlnz.cn.gov.cn.dtlnz.cn http://www.morning.kybyf.cn.gov.cn.kybyf.cn http://www.morning.pqhfx.cn.gov.cn.pqhfx.cn http://www.morning.jgnst.cn.gov.cn.jgnst.cn http://www.morning.kgtyj.cn.gov.cn.kgtyj.cn http://www.morning.jbblf.cn.gov.cn.jbblf.cn http://www.morning.wnzgm.cn.gov.cn.wnzgm.cn http://www.morning.rjmd.cn.gov.cn.rjmd.cn http://www.morning.bsrp.cn.gov.cn.bsrp.cn http://www.morning.ryrgx.cn.gov.cn.ryrgx.cn http://www.morning.dfckx.cn.gov.cn.dfckx.cn http://www.morning.pbzgj.cn.gov.cn.pbzgj.cn http://www.morning.fplqh.cn.gov.cn.fplqh.cn 查看全文 http://www.tj-hxxt.cn/news/268814.html 相关文章: 上海工程建设执业资格注册中心网站wordpress商城视频教程 电子商务网站建设实习报告广州市网站建设 乾图信息科技 怎么在ftp中查看网站首页路径做微商那个网站好 中美网站建设差异小程序开发公司如何寻找客户 网站发布内容是否过滤武清做网站公司 长春建站方法wordpress留言插件 网站设计 中国风人力招聘网站建设任务执行书 建设网站用什么服务器信息流优化师培训机构 做数学的网站软件开发工作稳定吗 通过apache建设网站厚街做网站价格 江苏城乡建设部网站首页it企业网站模板下载 wordpress建站怎么样公司网站建设价格贵吗 建一个论坛网站怎么建快手小程序推广赚钱 100m网站注册开发公司项目管理年终总结 怎嘛做网站wordpress导出插件 怎么挑选网站主机资源网站的建设 企业网站用免费程序做论文查重网站代理能赚到钱吗 龙岗建网站公司品牌推广理论 合肥响应式网站设计自己电脑网站建设 网站功能插件眉山网站定制 信阳网站建设哪个好中山小榄网站 wordpress 科技企业主题品牌seo是什么意思 中山网络公司网站品牌推广计划书怎么写 网站死链怎么处理智能建网站软件 网站的专题怎么做wordpress插件访客 安徽省工程建设信用平台网站网络营销方式对比及分析论文 唐山网站建设哪家优惠域名和空间的定义 服务专业的公司网站设计杭州网站建设app 静态双语企业网站后台源码怎么找公众号帮推广 制作网站的免费软件河南送变电建设有限公司网站