数组的最大堆表示

时间:2016-11-03 18:41:55

标签: java arrays binary-heap heap-size max-heap

作为家庭作业问题,我必须从数组中抽出最大堆。问题是:

请绘制存储在以下数组中的max-heap(heapsize为6) A [] = {15,10,8,5,2,7,20,30}

所以,当我尝试这个问题时,我只是采用了老式的方式,并没有考虑到heapSize小于数组大小。

我得到的最大堆是: {30,20,15,10,2,7,8,5}

我的问题是:这是对的吗?此外,既然heapSize小于数组大小,这对生成的最大堆有何影响?我应该只显示最大堆数组直到第6个元素,还是应该修改我的最大堆?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你误解了这个练习。

如果我们按字面意思进行练习,并且"抽出"从给定数组中得到大小为6的最大堆,我们得到一个这样的树:

      15
   10    8
  5  2  7 20
30

您可以看到数组的前6个元素按堆次序排列。

这也看起来像堆排序的中间状态: 最大值30是最后一个元素,其次是第二大元素20。 如果我们遵循堆排序算法, 用最后一个元素7交换当前最大堆元素15, 等等, 数组最终会按递增顺序排序。

我不知道练习是什么意思"抽出"最大堆, 但我怀疑这意味着堆积数组,这就是你所做的。

相关问题