数据结构复习笔记— —堆

堆的基本性质

堆也可以说是一个完全二叉树,就是除了最底层的,其它层是满的,既然我们可以用完全二叉树来表示一个堆,那么我们这里就采用数组结构的二叉树来阐述堆的性质。 假设在这里我们用数组A表示堆,A[i]表示堆里面的第i个元素,于是我们通过二叉树的性质可知:

Parent(i) = i/2
LeftChild(i) = 2*i
RightChild(i) = 2*i+1
就如下图表现所示:

这里写图片描述

堆的分类

在堆里面,我们可以大致将堆分为三类:最小堆、最大堆、堆

最小堆
只要在二叉树结构里面,对于除了根节点意外的任何节点i都满足:
A[PARENT[i]]<A[i],那么就称具有这种性质的堆为最小堆。

最大堆
与最小堆类似,只要在二叉树结构里面,对于除了根节点意外的任何节点i都满足:
A[PARENT[i]]>A[i],那么就称具有这种性质的堆为最大堆。


对于即即使最小堆也不是最大堆的堆来说,这种对我们就称之为堆。

堆排序,建堆时间O(n),排序时间O(nlogn)
找出若干个数中最大/最小的前K个数,堆排序最好,负责度为n+klogn
堆分类辅助空间O(1),用于交换的时候临时变量

最适合创建一个优先级队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值