算法通关村——原来这就是堆

1.青铜挑战——堆结构

1.堆的概念与特征

堆是将一组数据按照完全二叉树的存储顺序,将数据存储在一个一维数组中的结构。堆中有两种结构,一种称为大顶堆,一种称为小顶堆

小顶堆:任意节点的值均小于等于他的左右孩子,并且最小的值位于堆顶,即根节点处

大顶堆:任意节点的值均大于等于它的左右孩子,并且最大的值位于堆顶,即根结点处。

2 堆的构造过程

3 插入过程

将元素插入到保持其为完全二叉树的最后一个位置,然后顺着这条支路一直向上调正,没前进一层就要保证其子树都满足堆否则就去处理子树,直到完全满足要求

4 删除操作

堆 一般都是对堆中的数据进行操作都是针对堆顶的元素,即每次都从堆中获得最大值或最小值

删除的时候也是删除堆顶。如果直接删掉堆顶,整个结构就被破坏了,所以实际策略是先将堆中最后一个元素和堆顶元素进行替换,然后删除堆中最后一个元素。之后再从根开始逐步与左右比较,谁更大谁上位。然后再继续与子树比较,如果有更大的继续交换,直到自己所在的子树也满足大顶堆。

关于堆的问题:

查找:找大用小,大的进,找小用大,小的进

排序:升序用小,降序用大

查找的口诀:找K大,则用小堆,后续数据只有比根元素更大时才允许进入堆。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值