算法导论之堆

堆排序

堆排序的时间复杂度:O(nlgn)

堆排序的特点:空间原址性,任何时候只需要常数个额外的元素空间存储临时数据。

1.堆数据结构

  堆其实就是一个数组,在结构上被近似的看成是完全二叉树,树上的每一个节点对应一个数组中的元素,按照从根开始向下排列的顺序,进行完全二叉树的构建,除了最底层外,该树是完全充满的。

2.子节点与父节点的索引关系

若当前节点在数组中的索引为i,那么其父节点的索引位,那么其LEFT Child的索引为2i,其RIGHT Child的索引为2i+1PS:在计算机中的位操作可以更为方便的对其进行实现。父节点的索引位进行右移一位。LEFT Child向左移动一位,RIGHT Child向左移动一位低位补1

3.大根堆&小跟堆

大根堆:根据其定义我们可以很容易的理解到大根堆的特点位V[Parent(i)]>V[i]

小跟堆:根据其定义我们可以很容易的理解到小根堆的特点位V[Parent(i)]<V[i]

PS:这里一定要注意i是取不到根节点的,因为根节点没有父节点,所以有很多官方的定义都有这么一句话说除根节点外,道理就在这里。

PS:很多人弄不清LEFT Child RIGHT Child 的大小关系,在这里特意的强调一下,他们之间没有相应的大小关系。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值