📜  门| GATE CS 2020 |第 57 题

📅  最后修改于: 2021-09-26 03:20:23             🧑  作者: Mango

考虑包含 1023 个元素的二进制最小堆的数组表示。在堆中找到最大值所需的最小比较次数是 __________ 。

注意——这个问题是数字类型。
(一) 510
(二) 511
(三) 512
(四) 255答案:(乙)
解释:在具有 n 个元素的最小堆中,有 ceil(n/2) 个叶节点。
所以,会有 ceil(1023/2) = ceil(511.5) = 512 个元素作为外部节点。

现在,一般来说,要找到最多 n 个元素,您需要 (n-1) 次比较。
只需比较前两个,然后选择较大的并与下一个比较,选择较大的并与下一个比较等等。

因此,我们需要 511 (=512 – 1) 次最小比较次数才能找到给定堆中的最大值。

选项(B)是正确的。
这个问题的测验