初赛-堆的定义

堆的定义

性质

(1)可以利用数组实现堆。

(2)堆为一个完全二叉树,A[1]为根。第i个结点的父结点、左孩子结点、右孩子结点的下标了,分别为:i/2、2i、2i+1。如下图b。

(3)“大根堆”:除根以外的每个结点i都不得超过其父结点的值,这样就推出,堆中的最大元素存放在根结点中,且每一结点的子树中的结点值都小于等于该结点的值。如下图a。

(4)“小根堆”:反之称为“小根堆”。

 

初赛-堆的定义_第1张图片

初赛-堆的定义_第2张图片

 

 

操作

1、构建

构建采用先输入后调整的方式。从倒数第二层开始调整,进行下沉操作。逐层完成。注意此处必须从下往上构建。否则,先构建上层并不能保证符合大小根堆性质。

 

2、下沉

加入新元素或初始构建小根堆的时候,会使用下沉操作。

在插入元素时,难免破坏堆的性质,这就需要通过下沉操作来恢复堆的性质了。

 

3、上浮

加入新元素或初始构建大根堆的时候,会使用上操作。

在插入元素时,难免破坏堆的性质,这就需要通过操作来恢复堆的性质了。

你可能感兴趣的:(初赛,java,开发语言)