xiahe999 发表于 2018-9-20 06:12:59

Golang内置排序算法

type SortSample struct {  

  
}
  

  
func (this *SortSample) Sort() {
  var planets = []Person{
  {"Jim", 11},
  {"Jack", 23},
  {"Meimei", 43},
  {"Justin", 32},
  }
  //依据名称对人群排序
  name := func(p1, p2 *Person) bool {
  return p1.name < p2.name
  }
  //依据年龄对人群排序
  age := func(p1, p2 *Person) bool {
  return p1.age < p2.age
  }
  

  By(name).Sort(planets)
  fmt.Println("By name:", planets)
  

  By(age).Sort(planets)
  fmt.Println("By mass:", planets)
  
}
  

  
type earthMass float64
  
type au float64
  

  
type Person struct {
  name   string
  age int
  
}
  

  
type By func(p1, p2 *Person) bool
  

  
func (by By) Sort(planets []Person) {
  ps := &PersonSorter{
  persons: planets,
  by:      by,
  }
  sort.Sort(ps)
  
}
  

  
type PersonSorter struct {
  persons []Person
  by      func(p1, p2 *Person) bool
  
}
  

  
func (s *PersonSorter) Len() int {
  return len(s.persons)
  
}
  

  
func (s *PersonSorter) Swap(i, j int) {
  s.persons, s.persons = s.persons, s.persons
  
}
  

  
func (s *PersonSorter) Less(i, j int) bool {
  return s.by(&s.persons, &s.persons)
  
}
  



页: [1]
查看完整版本: Golang内置排序算法