考虑包含 1023 个元素的二进制最小堆的数组表示。在堆中找到最大值所需的最小比较次数是 __________ 。
注意——这个问题是数字类型。
(一) 510
(二) 511
(三) 512
(四) 255答案:(乙)
解释:在具有 n 个元素的最小堆中,有 ceil(n/2) 个叶节点。
所以,会有 ceil(1023/2) = ceil(511.5) = 512 个元素作为外部节点。
现在,一般来说,要找到最多 n 个元素,您需要 (n-1) 次比较。
只需比较前两个,然后选择较大的并与下一个比较,选择较大的并与下一个比较等等。
因此,我们需要 511 (=512 – 1) 次最小比较次数才能找到给定堆中的最大值。
选项(B)是正确的。
这个问题的测验