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

小根堆

几个注意点:

  1. 我们使用Less比较的时候决定了大根堆或小根堆
  2. push以及pop需要传入指针,因为涉及到改动。
  3. pop的时候需要删除最后一个,因为我们是append自己模拟进去的
  4. 我们自己用堆加入元素的时候需要使用heap中的方法来加入元素heap.push()和删除元素heap.pop()
  5. 如果我们自己想要查看堆顶,切片中索引为0对应的元素就是堆顶
1
2
3
4
5
minHeap := &MinHeap{}
heap.Init(minHeap)
heap.Push(minHeap, 123)
heap.Push(minHeap, 999)
num := heap.Pop(minHeap) //将会弹出堆顶