堆排序分析

时间:2011-09-26 11:24:11

标签: algorithm

在堆排序分析中,我们知道执行堆排序的方法之一分为两个阶段。

  1. 创建堆即最大或最小优先级队列。
  2. 从优先级队列中删除最大值/最小值,直到删除所有元素
  3. 假设有N个元素。对于阶段1,比较的数量为2N,对于一次删除,比较的数量为2lgN,因此对于N个删除,它是2NlgN比较。所以比较的总数是2N + 2NlgN

    这是我的理解。我正在阅读的书是Wesis的算法分析,其中说:

    在第二阶段,i deletemax最多使用2(floor(log i))次比较,总共最多2NlogN - O(N)次比较(假设为N >= 2) 。因此,在最坏的情况下,堆排序最多只有2NlogN - O(n)个比较。

    我的问题是

    1. 作者如何得出结论,在第二阶段,i deletemax最多使用2(floor(logi))次比较?

    2. 作者如何提出总计2NlogN - O(N)

0 个答案:

没有答案