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