1. 特征
堆是一颗完全二叉树,堆所对应树的节点的排列必须是从上到下,从左到右的依次排列,否则将不构成堆。
在最大堆中,根节点值最大,叶子节点值较小,从根到叶子的一条路径上,节点值是从大到小排列的。
任何一个父节点的值都大于等于其子节点的值,但节点的左右子节点并无顺序要求,且上层节点的值不一定大于下层节点的值。
堆中每个结点的子树都是堆。
2. 构建
方法1
从一个空堆开始,逐步插入A中的每个元素,直到A中所有元素都被转移到堆中。
时间复杂度为O(nlogn),因为插入一个元素需要logn,总共需要插入n个构建元素。
其他方法
直接对数据进行调整,如自上而下的调整。
一次调整需要O(nlogn), 总共需要logn次调整。
参考资料:数据结构之堆