JavaScript版:数据结构之“堆”

263 阅读1分钟

1. 堆简介

1.1 堆是什么?

  • 堆是一种特殊的完全二叉树

image.png

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

image.png

1.2 JS中的堆

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

1.3 堆的应用

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

1.4 第K个最大元素

image.png

  • 构建一个最小堆,并将元素依次插入堆中
  • 当堆的容量超过K,就删除堆顶
  • 插入结束后,堆顶就是第K个最大元素。