手写优先队列,实现 add(),poll(),peek() 。这三个函数是一个怎样的过程

  1. 用数组实现最小堆
  2. add(): 首先先判断是否需要扩容,然后把新值放到堆的右下角,然后从下至上依次比较右下元素与其父节点的值大小,右下小则交换,直到右下角大才退出循环。
  3. pop(): 先暂存堆顶元素值,再把右下角值赋给堆顶,再在循环里从上往下比较父节点与其左右子节点大小