堆
堆一般来说指的是二叉堆,在 二叉堆中每个元素都要保证大于(小于)等于子节点的元素。当一棵二叉堆的每个节点都符合这个条件时,它的根节点即这个二叉堆的最大值(最小值)
使用数组来存储一棵二叉堆,由于它是一颗完全二叉树。根据数组以及完全二叉树的特点,我们可以通过计算数组的索引在树中上下移动:从a[k]向上一层移动就令k等于k/2,向下一层移动则令k等于2k或者2k+1。利用这种数据结构我们可以实现对数级别的插入元素和删除最大元素的操作。
下面是一个最大堆的实现:
1 | class Heap { |
1 | function testheap() { |