* * 5.6 堆(Heap) 一、堆的定义 1、什么是堆? ◆若有n个关键字的集合K={k0,k1,k2, …,kn-1}将其所有元素按完全二叉树的顺序存贮方式存于一个一维数组中,并且满足以下条件,则该集合称为最小堆(或最大堆)。 ki≤k2i+1和ki≤k2i+2 或 ki≥k2i+1和ki≥k2i+2 (其中,i = 0,1, …?(n – 2) / 2? ) ◆举例 09 17 65 23 45 78 87 53 31 0 1 2 3 4 5 6 7 8 最小堆 87 78 53 45 65 09 31 17 23 0 1 2 3 4 5 6 7 8 最大堆 09 17 65 23 45 78 87 53 31 0 1 2 3 4 5 6 7 8 堆顶元素值最小 87 78 53 45 65 09 31 17 23 0 1 2 3 4 5 6 7 8 堆顶元素值最大 * 2、最小堆的类声明 template class Elem,class Comp class MinHeap { private : Elem * heap; //存放堆元素的数组 int
原创力文档

文档评论(0)