Java 数组的最大堆表示法
作为家庭作业问题,我必须从数组中提取最大堆。问题内容如下: 请取出存储在以下数组中的最大堆(heapsize为6) A[]={15,10,8,5,2,7,20,30} 所以,当我尝试这个问题时,我只是用老式的方式来做,没有考虑到heapSize小于数组大小 我得到的最大堆数是: {30,20,15,10,2,7,8,5} 我的问题是:这是正确的吗?另外,既然heapSize小于数组大小,这将如何影响生成的最大堆?我应该只显示最大堆数组直到第6个元素,还是修改最大堆Java 数组的最大堆表示法,java,arrays,binary-heap,heap-size,max-heap,Java,Arrays,Binary Heap,Heap Size,Max Heap,作为家庭作业问题,我必须从数组中提取最大堆。问题内容如下: 请取出存储在以下数组中的最大堆(heapsize为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交换,
等等
数组将以按递增顺序排序的值结束
我不知道这个练习“抽出”最大堆是什么意思,
但我怀疑这是否意味着要对阵列进行重装,而你就是这么做的