堆排序

1/5 

i/iii 

(二叉)堆是一个数组A[1 . . A.length],可以被看成一个近似的完全二叉树:除最底层外,该树是完全充满的,而且是从左向右填充。
树上的每一个节点对应数组中的一个元素,树的根节点为A[1]。
这里写图片描述
给定一个结点的下标 i ,可以得到:
父结点下标 Parent(i) : i2
左孩子结点下标 Left(i) : 2i
右孩子结点下标 Right(i) : 2i+1

ii/iii 

最大堆:除了根以外的所有结点 i 都有 A[Parent(i)]A[i]
最小堆:除了根以外的所有结点 i 都有 A[Parent(i)]A[i]

iii/iii 

a/c.   在高度为h的堆中,元素个数最多和最少分别是多少 ?
最多:最底层全满
1+21+22+23+...+2h1+2h=2h+11
最少:最底层只有一个结点
1+21+22+23+...+2h1+1=2h

b/c.   含 n 个元素的堆的高度为 lgn .
假设含 n 个元素的堆的高度为 h ,则 2hn2h+11 ,两边取对数则有: hlgn<h+1
故堆的高度为 lgn .

c/c.   当用数组表示存储 n 个元素的堆时,叶结点下标分为为 n2 +1, n2 +2,… , n.
最后一个叶结点N的下标为 n ,则其父结点P下标为 n2 .
若结点P右侧的结点含有孩子结点,则 N 就不是最后一个叶结点。
故P右侧的结点均为叶结点,即叶结点下标分为为 n2 +1, n2 +2,… , n.


2/5 


3/5 


4/5 


5/5 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值