数组的最大堆表示
问题描述:
作为一项家庭作业问题,我必须从数组中取出最大堆。读取问题:数组的最大堆表示
请抽出存储在以下数组中(堆大小是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阵列,这是你做了什么。