您的位置:首页 > 其它

建堆

2015-12-07 16:08 267 查看
建堆过程就是根据数组元素进行最大堆的创建,可以利用堆维护的性质,堆维护见博客。在进行创建时,将数组的最后一半元素视为叶子,对前一半利用堆维护的性质进行建堆。时间复杂度为O(n)代码如下:

void Insert::BuileMaxHeap(int A[],int total)
{
int roots=total/2-1;//建堆时,把数组元素后一半的视为完全二叉树即堆的叶子.
for(;roots>=0;--roots)
{
MaxHeapIFY(A,roots,total);//堆维护函数
}

}


建立最小堆类似。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: