堆 Heap

堆 Heap

是一种高效维护集合中最大最小元素的数据结构

大根堆:跟节点最大的堆,用于维护和查询Max
小根堆:跟节点最大的堆,用于维护和查询Min

特点:

二叉堆

是堆的一种简易实现, 本质上是一种满足堆性质的完全二叉树。
常见操作:

  • 建堆:O(N)
  • 查询最值:O(1)
  • 插入:O(log N)
  • 取出最值:O(log N)

实现:
二叉堆一般使用一个二维数组来存储,利用完全二叉树的结点编号特性。

假设第一个元素存储在索引下标为1的位置

  • 索引为P的节点的左孩子的索引为P*2
  • 索引为P的节点的右孩子的索引为P*2+1
  • 索引为P的节点的父亲的索引为P/2(向下取整)

假设第一个元素存储在索引下标为0的位置

  • 索引为P的节点的左孩子的索引为P*2+1
  • 索引为P的节点的右孩子的索引为P*2+2
  • 索引为P的节点的父亲的索引为(P-1)/2(向下取整)

你可能感兴趣的:(后端)