堆以及堆排序

该文章通过观看左神算法总结

对于当前节点i的左孩子是2*i+1、右孩子是2*i+2、父亲节点是(i-1)/2

堆分为大根堆和小根堆

大根堆:在完全二叉树里每一个子树的父节点大于其子节点

小根堆:在完全二叉树里每一个子树的父节点小于其子节点

Heepinsert算法

这个算法确保二叉树一直是大根堆,一直拿当今节点与父节点进行比较

若遇到一个数组你经过堆排序后,让你取出最大值后仍然满足大根堆,则进行以下思维操作:

1.把最够一个子节点当作根节点 ,同时把heepsize-1

2.从index=1再进行开始,让每个子树的两个子节点进行比较取最大值,同时让这个最大值与父节点进行比较,比父节点大则进行交换,比父节点小则不动。 

利用大根堆依次取最大值

 

 时间复杂度为n*logN

空间复杂度为O(1)

优先级队列结构,就是堆结构

在不包含任何参数时,默认为小根堆。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值