gpt4 book ai didi

java - L&C 的 Java 软件结构中堆的数组实现错误

转载 作者:行者123 更新时间:2023-12-01 15:38:36 25 4
gpt4 key购买 nike

Java Software Structures 3rd Edition Lewis 和 Chase 提出,堆的数组实现适用于少量项目,但在有大量项目的情况下有时会抛出 ArrayIndexOutOfBoundsException。它出现在 ArrayHeap(扩展了 ArrayBinaryTree)中的方法 heapifyRemove() 的第 113 行。

第 113 行:

if ((tree[left] == null) && (tree[right] == null))

看来 left 有时会离开数组的末尾。如何解决这个问题?

供引用:

ArrayHeap.java

ArrayBinaryTree.java

最佳答案

在检查 left 的索引是否为 null 之前,应该检查数组的大小是否包含 left (从数组的增长方式来看,它看起来总是包含 left 和 right)。我认为这种情况应该被解释为左和右为空。

所以代码应该是

if ((left > count) || ((tree[left] == null) && (tree[right] == null)))

关于java - L&C 的 Java 软件结构中堆的数组实现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8450109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com