nodeheap.go 590 B

12345678910111213141516171819202122232425262728293031
  1. package scheduler
  2. type nodeMaxHeap struct {
  3. nodes []NodeInfo
  4. lessFunc func(*NodeInfo, *NodeInfo) bool
  5. length int
  6. }
  7. func (h nodeMaxHeap) Len() int {
  8. return h.length
  9. }
  10. func (h nodeMaxHeap) Swap(i, j int) {
  11. h.nodes[i], h.nodes[j] = h.nodes[j], h.nodes[i]
  12. }
  13. func (h nodeMaxHeap) Less(i, j int) bool {
  14. // reversed to make a max-heap
  15. return h.lessFunc(&h.nodes[j], &h.nodes[i])
  16. }
  17. func (h *nodeMaxHeap) Push(x interface{}) {
  18. h.nodes = append(h.nodes, x.(NodeInfo))
  19. h.length++
  20. }
  21. func (h *nodeMaxHeap) Pop() interface{} {
  22. h.length--
  23. // return value is never used
  24. return nil
  25. }