📜  数据结构 |堆 |问题 1

📅  最后修改于: 2021-09-08 13:30:22             🧑  作者: Mango

Build Heap 操作的时间复杂度是多少。构建堆用于从给定数组构建最大(或最小)二进制堆。构建堆在堆排序中用作排序的第一步。
(A) O(nLogn)
(B) O(n^2)
(C) O(登录)
(D) O(n)答案: (D)
说明:以下是构建输入数组 A 的堆的算法。

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

尽管最坏情况的复杂度看起来像 O(nLogn),但时间复杂度的上限是 O(n)。有关时间复杂度的证明,请参阅以下链接。

构建堆的时间复杂度
这个问题的测验