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]