📜  数据结构|堆|问题1

📅  最后修改于: 2021-06-29 11:14:21             🧑  作者: Mango

Build Heap操作的时间复杂度是多少? 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)。有关时间复杂度的证明,请参见以下链接。

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