初赛-堆的定义

堆是一种特殊的数据结构,通常用数组实现,分为大根堆和小根堆。大根堆中每个节点的值不小于其子节点,而小根堆则相反。主要操作包括构建堆、下沉操作(用于恢复大根堆或小根堆性质)和上浮操作。构建堆通常从底层向上进行,确保堆的性质得到满足。
摘要由CSDN通过智能技术生成
堆的定义

性质

(1)可以利用数组实现堆。

(2)堆为一个完全二叉树,A[1]为根。第i个结点的父结点、左孩子结点、右孩子结点的下标了,分别为:i/2、2i、2i+1。如下图b。

(3)“大根堆”:除根以外的每个结点i都不得超过其父结点的值,这样就推出,堆中的最大元素存放在根结点中,且每一结点的子树中的结点值都小于等于该结点的值。如下图a。

(4)“小根堆”:反之称为“小根堆”。

 

 

 

操作

1、构建

构建采用先输入后调整的方式。从倒数第二层开始调整,进行下沉操作。逐层完成。注意此处必须从下往上构建。否则,先构建上层并不能保证符合大小根堆性质。

 

2、下沉

加入新元素或初始构建小根堆的时候,会使用下沉操作。

在插入元素时,难免破坏堆的性质,这就需要通过下沉操作来恢复堆的性质了。

 

3、上浮

加入新元素或初始构建大根堆的时候,会使用上操作。

在插入元素时,难免破坏堆的性质,这就需要通过操作来恢复堆的性质了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值