试着想一下say的位置的下限,即max-heap中第n个最大的键。假设堆在数组中布局。上限的min(2 ^ n-2,数组大小-1)我认为,但它总是低于0?
答案 0 :(得分:0)
问题的初步调查揭示了n与下界和上界之间的以下关系(假设堆中有14个元素)
n lb up
1 1 1
2 2 3
3 2 7
4 2 14
9 3 14
10 4 14
12 5 14
13 6 14
14 8 14
要确定可能大于堆数组特定位置中元素的元素数,请计算以该位置为根的子树的大小。然后这两个数字通过公式
相关联# of elements possible larger = total number of elements - size of subtree - 1
编辑: 请注意,计算是向后执行的。给定数组/堆中的位置,可以确定堆排序时值的位置。给定节点,堆可以分为三个分区:
如果我们查看包含14个元素的示例堆并想要确定第6个位置中可能值的范围,则组如下:
因此下限为3(第一组中的元素数+ 1),而上限为11(第一组中的元素数+第三组中的元素数+ 1)。