zoukankan      html  css  js  c++  java
  • go简单实现heap

    go 简单实现heap

    go有一个线程的heap接口 实现简单的方法即可实现heap container/heap/heap/Interface

    type Interface interface {
    	sort.Interface
    	Push(x interface{}) // add x as element Len()
    	Pop() interface{}   // remove and return element Len() - 1.
    }
    

    只需要简单实现接口即可

    type Heap struct {
    	slice []int
    	nums  int
    }
    
    func (h *Heap) Len() int {
    	return h.nums
    }
    
    func (h *Heap) Less(i, j int) bool {
    	return (h.slice)[i] > (h.slice)[j]
    }
    
    func (h *Heap) Swap(i, j int) {
    	(h.slice)[i], (h.slice)[j] = (h.slice)[j], (h.slice)[i]
    }
    
    func (h *Heap) Push(x interface{}) {
    	h.nums++
    	h.slice = append(h.slice, x.(int))
    }
    
    func (h *Heap) Pop() (ret interface{}) {
    	ret = (h.slice)[h.Len()-1]
    	h.slice = (h.slice)[:h.Len()-1]
    	h.nums--
    	return
    }
    
    
    
    func main()  {
    	ret := &Heap{
    		slice:   []int{},
    	}
    	heap.Init(ret)
    	heap.Push(ret,1)
    	heap.Pop(ret)
    	fmt.Println(ret)
    }
    
    Songzhibin
  • 相关阅读:
    Navicat使用技巧(附快捷键)
    Eclipse working set 快捷键
    行为模式--策略模式
    软件的可复用性和维护性
    外观模式
    建造者模式
    开闭原则
    迪米特法则
    工厂作业方法
    依赖倒置原则
  • 原文地址:https://www.cnblogs.com/binHome/p/14861568.html
Copyright © 2011-2022 走看看