max-heapify的运行时间分析
来源:互联网 发布:Centos内核查看 编辑:程序博客网 时间:2024/06/06 08:47
[算法] MAX-HEAPIFY最坏情况下子树大小2n/3的由来
在堆排序中求解MAX-HEAPIFY时间复杂度时,可以得到下面的递归表达式:
T(n)=T(subtree(i)) + Θ(1)
式中关键是要知道subtree(i)的大小。
由于堆排中用到的二叉树是个近似满二叉树。因此最坏情况出现在最底层只有一半满的时候。
由二叉树性质可以知道,对于只有0个或2个子结点的二叉树,其叶子结点的个数要比内结点个数总和多1。此时可以得到:
ROOT
L R
/ \ / \
/ \ / \
----- -----
*****
设i的右子树结点个数为k。
则i左子树结点个数由两部分组成:
一部分与右子树对称也有k个结点
一部分是多出来的最后一层,因为这一层只有一半所以它的结点个数为(2k+1+1)/2
于是可以得到:
k+k+(2k+1+1)/2+1=n
化简得到:
k=(n-2)/3
因此,subtree(i)结点个数为:
k+(2k+1+1)/2=2n/3-1/3≤2n/3
因此MAX-HEAPIFY的时间复杂度递归表达式为:
T(n)=T(2n/3) + Θ(1)
转自:http://hi.baidu.com/ghymark/item/462ad61d3d2c450c1894ec11
- max-heapify的运行时间分析
- 关于堆排序中MAX-HEAPIFY中时间复杂度的分析
- 大根堆 - max heapify
- W. :MAX-HEAPIFY,6-2中描述的子过程,P75.
- 第六章堆排序之“保持堆的性质MAX-HEAPIFY”(递归版)
- 第六章堆排序之“保持堆的性质MAX-HEAPIFY”(迭代版,练习6.2-5)
- 堆排序之MAX-HEAPIFY注释
- heapify的总结
- Heapify
- 最大堆维护,MAX-HEAPIFY非递归伪代码
- 6个算法的运行时间分析
- 算法运行时间分析
- 分析算法运行时间的一些通用规则
- python程序运行时间的几种分析方法
- CSS: max-width 的 @media 不运行
- 运行时间的对数
- Lintcode - Heapify
- [刷题]Heapify
- No result defined for action and result input
- 三极管电路一些总结
- java中Statement详细用法
- OA发展建议有奖调研内容
- git 使用技巧
- max-heapify的运行时间分析
- MySQL架构
- 客户端本地存储解决方案
- spring 的事务管理1
- iOS6漏洞中阿拉伯字符串导致微信QQ短信崩溃的解决方法
- java学习之路---IO-----File类
- hdu 3371 Connect the Cities
- JAVA泛型擦除
- Centos 下安装与设置VIM编辑器