采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
data[count + 1]=item;这里数组越界的原因及解决方法没有理解,请在详细介绍一下。
抱歉,我没有特别理解你不理解的点。是认为在什么情况下,这个代码会发生错误?还是认为在什么情况下,这个代码你觉得应该如何执行,可实际却是如何执行的?你没有理解?
什么情况下会报错?还有定义 int capacity后怎么解决数组越界的?
如果向堆里添加超过 capacity 个元素会报错。在这一版代码中,定义的 capacity 无法解决数组越界,它只是告诉用户,这个对最多盛放 capacity 个元素。这就像定义一个 int arr[10],只是告诉用户这个数组索引范围是 0-9,当访问 arr[10] 的时候,是不安全的(在 Java 中报越界错误)。归根到底是因为这个课程的堆,是使用静态数组实现的。如果想取消这个限制,需要使用动态数组。我的另外一个课程的堆使用动态数组实现,将没有这个限制。感兴趣可以参考这个代码(Java):https://github.com/liuyubobobo/Play-with-Data-Structures/blob/master/08-Heap-and-Priority-Queue/05-Heapify-and-Replace-in-Heap/src/MaxHeap.java
登录后可查看更多问答,登录/注册
课程专为:短时间内应对面试、升职测评等艰巨任务打造
8.8k 21
5.8k 3
5.0k 5
1.4k 18