堆(heapsort)的有关概念

来源:互联网 发布:个人域名备案企业网站 编辑:程序博客网 时间:2024/06/16 20:03

关于堆的一些基本概念

  1. :你可以把他看成是一个数组,近似的看成一个完全的二叉树,从二叉树顶端开始,从上到下,从左到右,按这个顺序的值组成了数组里的值。
  2. 最大堆(大根堆):除了根节点以外的任意父节点的值都要大于等于其子节点的值。(你可以想象成,在那个堆的二叉树图中,上面节点的值要大于等于下面节点的值)
  3. 最小堆(最小堆):除了根节点以外的任意父节点的值都要小于等于其子节点的值。(同理你也可以想象,在那个堆的二叉树图中,上面节点的值要小于等于下边节点的值)
  4. 特殊堆:当你所有节点的值都是一样时,此时既是最大堆,也是最小堆。
  5. 高度:任意节点都有高度,表示为此节点开始到叶节点最长简单路径上边的数目,进而我们可以把根节点的高度定义为堆的高度。

2.一些结论

  1. 高度为 h 的堆中,元素个数最多是 2h+11 (此时是一个满二叉树) ;最少就是 2h1+1个元素(完全二叉树的最后一成只有一个子叶)。
  2. n 个元素的高度为 lgn
  3. 在最大堆的任意子树中,该子树所包含的最大元素在该子树的根节点上。(这个从定义上可以得出结论,或者用数学归纳法也可以证明)
  4. 若一个最大堆的所有元素都不想同,则该堆的最小元素应该在最底部的叶子节点上
  5. 一个按从小到大排好序的数组是一个最小堆,相反若是从大到小排序是一个最大堆
  6. 当用数组表示存储 n 元素的时候, 叶子节点的下标分别为: n/2+1,(n/2)+2,....,n
原创粉丝点击