使用数组结构表示堆结构,元素从索引 0 开始,则索引 i
位置:
- 父节点索引为 $(i - 1) / 2$
- 左孩子索引为 $2 \times i + 1$
- 右孩子索引为 $2 \times i + 2$
实现
- Java 实现
1 | public class Heap { |
输出内容:
1 | [13, 9, 5, 3, 9, -4, -1, -6, -2, 0, 7] |
- Rust 实现
1 | pub struct Heap<T>(Vec<T>); |
使用数组结构表示堆结构,元素从索引 0 开始,则索引 i
位置:
1 | public class Heap { |
输出内容:
1 | [13, 9, 5, 3, 9, -4, -1, -6, -2, 0, 7] |
1 | pub struct Heap<T>(Vec<T>); |