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)。有关时间复杂度的证明,请参见以下链接。
建立堆的时间复杂度
这个问题的测验