# 堆是什么

堆是一个特殊的“完全二叉树”

  • 所有的节点都大于等于(最大堆)或小于等于(最小堆)它的子节点

# 特点

  • JS 中通常使用数组表示堆
  • 任意节点的左侧子节点位置是 2 * index + 1
  • 任意节点的右侧子节点位置是 2 * index + 2
  • 父节点位置是(index - 1)/ 2

# 堆的应用

  1. 堆能高效、快速地找出最大值和最小值。时间复杂度:O(1)
  2. 找出第 K 个最大元素或最小元素