数组的最大堆表示

问题描述:

作为一项家庭作业问题,我必须从数组中取出最大堆。读取问题:数组的最大堆表示

请抽出存储在以下数组中(堆大小是6) A [] = {} 15,10,8,5,2,7,20,30

最大堆

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

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

我的问题是:这是正确的吗?此外,现在heapSize小于数组大小,这是如何影响最大堆产生?我应该只显示最大堆数组,直到第6个元素还是我应该修改我的最大堆?

谢谢!

我想你误解了这个练习。

如果我们把锻炼字面上看,并从给定数组“绘制出”大小6的最大堆,我们得到了一棵树是这样的:

 15 
    10 8 
    5 2 7 20 
30 

你可以看到,前6种元素该数组以堆的顺序排列。

这也看起来很像一个堆排序的中间状态: 最大值30是最后一个元素,其次是第二大的20 如果我们遵循堆排序算法, 交换当前最大堆元素15与最后一个元素7, 依此类推, 数组将按照升序排序。

我也不是什么行使“抽出”最大堆, 意思,但我怀疑这意味着,到heapify阵列,这是你做了什么。