java - 为什么不使用堆数组的元素零?

标签 java heap

这是我对具有任意值的堆开始的粗略草图

 0   1    2    3    4    5    6    7    8    9   ...
[-] [10] [14] [15] [22] [21] [24] [23] [44] [30] ...

为什么array[0]中的元素一定要设置为null?
或者为什么我们不应该使用它?

最佳答案

有几种方法可以将二叉堆表示为数组。

有一种方法可以使用元素零;还有一种方法可以使用元素零:

  1. 根是元素0;元素 n 的子元素是元素 2n+12n+2
  2. 根是元素1;元素 n 的子元素是元素 2n2n+1

没有一个比另一个更“正确”。前者更适合使用 zero-based arrays 的编程语言。 , 而后者更适合带有 one-based arrays 的语言.

您似乎遇到了使用第二种方法的实现。由于所讨论的语言 Java 使用从零开始的数组,元素零存在但未被使用。

关于java - 为什么不使用堆数组的元素零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9462003/

相关文章:

java - 是否有一个 Java 库可以实现样本分布正态性的测试之一?

java - 如何迭代一组链接并提取 href 并将它们存储在新的集合中?

java - Java 错误中的自下而上堆

c - 最大堆段错误

java - 从二进制最大堆中删除根节点的算法

java - GAE blobstore 在何处以及如何存储文件(或 blob)?

java - Gradle 与在同一线程中运行的同一类的方法并行运行测试类

java - JAVA_HOME 设置错误

php - 有没有办法让 PHP 的 SplHeap 重新计算? (又名 : add up-heap to SplHeap? )

java - 如何修复堆结构的循环