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

📅  最后修改于: 2021-09-26 04:18:15             🧑  作者: Mango

通过调整从节点⌊(n – 1) /2⌋开始的完整二叉树的每个内部节点的根,并调整到根节点,可以将大小为n的整数数组转换为堆(根节点在索引 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)答案:(乙)
说明:上面的语句实际上是构建输入数组A的Heap的算法。

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/
这个问题的测验