最大堆的插入

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 的祖先,

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

你可能感兴趣的:(最大堆的插入)