该文章通过观看左神算法总结
对于当前节点i的左孩子是2*i+1、右孩子是2*i+2、父亲节点是(i-1)/2
堆分为大根堆和小根堆
大根堆:在完全二叉树里每一个子树的父节点大于其子节点
小根堆:在完全二叉树里每一个子树的父节点小于其子节点
Heepinsert算法
这个算法确保二叉树一直是大根堆,一直拿当今节点与父节点进行比较
若遇到一个数组你经过堆排序后,让你取出最大值后仍然满足大根堆,则进行以下思维操作:
1.把最够一个子节点当作根节点 ,同时把heepsize-1
2.从index=1再进行开始,让每个子树的两个子节点进行比较取最大值,同时让这个最大值与父节点进行比较,比父节点大则进行交换,比父节点小则不动。
利用大根堆依次取最大值
时间复杂度为n*logN
空间复杂度为O(1)
优先级队列结构,就是堆结构
在不包含任何参数时,默认为小根堆。