go中的heap实现大根堆与小根堆

小根堆

几个注意点:

  1. 因为heap需要我们实现sort接口(3个方法,Less,Swap,以及Len)我们使用Less比较的时候决定了大根堆或小根堆
  2. push以及pop因为涉及到切片中元素个数的改变,可能进行扩容或缩容,所以要使用指针
  3. Push以及Pop的实现就按照对切片的处理即可
  4. 之后初始化我们的堆的时候需要先建立我们自己的堆,然后使用heap.Init()初始化
  5. 后面堆要弹出或加入元素都必须使用heap.Push()以及heap.Pop()