📜  门| GATE-IT-2004 |第53章

📅  最后修改于: 2021-06-29 20:35:27             🧑  作者: Mango

大小为n的整数数组可以通过调整从完整二进制树的每个内部节点(从节点⌊(n – 1)/2⌋)开始的堆的根,并进行直到根节点的调整,而转换为堆(根节点在索引0处)的顺序为⌊(n – 1)/2⌋,⌊(n – 3)/2⌋,…..,0。以这种方式构造堆所需的时间为
(A) O(log n)
(B) O(n)
(C) O(n log log n)
(D) O(n log n)答案: (B)
说明:上面的语句实际上是用于构建输入数组A的堆的算法。

BUILD-HEAP(A) 
    heapsize := size(A); 
    for i := floor(heapsize/2) downto 1 
        do HEAPIFY(A, i); 
    end for 
END

上述算法的时间复杂度上限为O(n)

参见-https://www.geeksforgeeks.org/g-fact-85/
这个问题的测验