对于给定的堆,插入一个元素,使之满足最大堆性质。其原理是:为原来的堆末尾添加一个计算机所允许的最小元素,然后调用增加优先级函数,将要插入的值放置到合适的位置。因为要动态的增加元素,所以不能使用数组,应该使用容器。
代码如下
void Insert::MaxHeapInsert(vector<int> &coll,int key)
{
coll.push_back(-65535);
int temp=coll.size();
HeapIncreseKey(coll,temp-1,key);
}
其时间复杂度和HeapIncreseKey一样,为O(lgn).