堆(heap)原理

(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。 堆总是满足下列性质:

  • 堆中某个节点的值总是大于或小于其父节点的值;
  • 堆总是一颗完全树。

将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。


堆支持以下的基本操作:
  支持的基本操作

  • build:建立一个空堆;
  • insert:向堆中插入一个新元素;
  • update:将新元素提升使其符合堆的性质;
  • get:获取当前堆顶元素的值;
  • delete:删除堆顶元素;
  • heapify:使删除堆顶元素的堆再次成为堆。

某些堆实现还支持其他的一些操作,如斐波那契堆支持检查一个堆中是否存在某个元素。

  应用

  堆排序

主条目: 堆排序

堆(通常是二叉堆)常用于排序。这种算法称作堆排序。

  优先队列

主条目: 优先队列

最小堆常用于实现优先队列。

你可能感兴趣的:(数据结构)