堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。

堆总是满足下列性质:

  • 堆中某个结点的值总是不大于或不小于其父结点的值
  • 堆总是一棵完全二叉树

我们将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。

堆可以用一维数组作存储结构。或者说:堆就是用数组实现的完全二叉树。

堆的数据结构逻辑上是二叉树,但存放在一维数组里。

堆的根下标为1。
堆第i个元素的左孩子是第 2*i个元素;
堆第i个元素的右孩子是第 2*i+1个元素;

堆一般具有以下操作:

  • Up:向上调整

  • Insert:插入

  • Down:向下调整

  • Pop:取出最值(根——堆顶)

  • buildHeap: 建堆有2种方法

  • sort:排序

posted @ 2022-03-12 21:50  himekawa  阅读(58)  评论(0)    收藏  举报