您的位置:首页 > 其它

堆排序算法时间复杂度推导

2010-02-05 22:37 369 查看
maxheapify的复杂度是o(lgn),而建立最大堆的复杂度是o(n),那么是不是堆排序算法的复杂度就是二者相乘呢?当然不是,怎么可能这么简单
首先,在建立一次最大堆,消耗n的时间,继续执行,每次将最大的数(根节点)选出来,然后maxheapify,直到将整个数组的元素历遍完毕。好了,回顾一遍堆排序算法后,开始正式推导。
首先,设堆的大小为n,堆的高度为lgn,设当前元素所在的高度为h
则每一次maxheapify的时间复杂度为0(lgn-h), 前提是maxheapify的复杂度为lgn
Buildheap 的复杂度为o(n)
平均每一层中应该有 个元素,所以,对排阻算法的时间复杂度应该为: 0(lgn-h)=o( (lgn-h))=o(nlgn)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: