Skip to content

Latest commit

 

History

History
9 lines (7 loc) · 768 Bytes

README.md

File metadata and controls

9 lines (7 loc) · 768 Bytes

学习笔记

堆:

  1. O(1)的时间获取最大值(大顶堆)或者最小值(小顶堆),内部实现有很多,二叉堆是其中容易实现的,但效率不是最高的。
  2. 完全二叉树可以用数组来实现,实现是层序遍历。左孩子index是2*i+1,右孩子index是2i+2。索引父节点是floor((i-1)/2)
  3. 为了保证堆是一个完全二叉树,所以删除和添加的工作全部都是通过操作堆的最后一个元素,然后进行逐步调整。这种方式的亮点可以保证二叉树仍然保持完全二叉树。
  4. 工程中堆是Priority_Queue的实现。
  5. 在实战例子中可以发现,堆一般用来获取前K个高或低的元素。排序也可以做到,但是堆的优势就是性能比排序高。