介绍:数据结构中一种特殊的二叉树,不同于JAVA内存模型中的堆
1.堆是一棵满足一定性质的二叉树:父节点的键值总是不大于他孩子节点的键值,称小顶堆, 堆可以分为小顶堆和大顶堆
要实现堆的基本操作,涉及到两个关键函数
siftUp(i x):将位置I的元素X向上调整,以满足堆的性质,用于INSERT之后
siftDown(i x)用于delete(i)后 用于调整堆
堆的变体:二叉堆 ,二项式堆,斐波那契堆(很高效)
应用场景:优先队列,一亿中找TOP K(维护二叉堆)时间复杂度o(nlogk)
heapify insert peek extractMin delete(i)
O(n) O(logn) O(1) O(logn) O(logn)
https://blog.csdn.net/m0_37264516/article/details/84941656