最大堆的插入

来源:互联网 发布:淘宝练字神器有用吗 编辑:程序博客网 时间:2024/05/22 13:47
void insert(int *heap, int n, int e) {int i;for (i = (n+1); i > 1 && heap[i/2] < e; i /= 2) {heap[i] = heap[i/2];}heap[i] = e;}


把 e 先插入最后一个位置heap[n+1],从下网上调整,把所有比 e 小的祖先

都下移一个位置,最后把 e 放入合适的位置。


从最后一个节点开始,遍历祖先节点,找到第一个大于 e 的祖先,

然后这个祖先的孩子就是插入位置。