Golang 实现排序

Go 语言提供了sort包,可以用来排序。但需要排序的对象必须实现sort.Interface接口。
sort.Interface 定义:

type Interface interface {
    Len() int
    Less(i, j int) bool
    Swap(i, j int)
}

现在需要对一群人按年龄升序排序,首先定义Human类型

type Human struct {
    Name string
    Age  int
}

然后定义集合类型Humans

type Humans []Human

Humans 实现sort.Interface接口

// Len 是集合中元素的数量
func (h Humans) Len() int {
    return len(h)
}

// 比较索引为i的元素是否小于索引为j的元素
func (h Humans) Less(i, j int) bool {
    return h[i].Age < h[j].Age
}

// Swap 交换索引为 i 和 j 的元素。 
func (h Humans) Swap(i, j int) {
    h[i], h[j] = h[j], h[i]
}

升序排序

func main() {
    var humans Humans
    ...
    sort.Sort(humans)
    ...
}

降序排序

func main() {
    var humans Humans
    ...
    sort.Sort(sort.Reverse(humans))
    ...
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 二分查找 顺时针查找 很多语言中排序算法都是和序列数据类型关联,同时排序函数和具体类型元素关联。相比之下,Gola...
    JunChow520阅读 3,150评论 0 2
  • 排序规则描述类: NSSortDescriptor NSSortDescriptor来指定排序规则, 对集合等进行...
    SkyMing一C阅读 6,631评论 3 12
  • 典型排序问题 我们在实际生活中可能会遇到各种各样的排序问题,比如:对学生信息进行排序,信息可能有学号,成绩,电话等...
    芳仔小脚印阅读 959评论 0 0
  • 项目中经常会遇到列表搜索查询,大部分的查询是可以通过sql语句来实现的,有些特殊的搜索排序sql则实现不了,例如中...
    信徒_allen阅读 2,601评论 0 1
  • 在程序开发中,不可避免的需要给数据集进行排序,如果在语言级别不提供支持的话,我们则需要自己写算法进行数据的处理,麻...
    YXWKY阅读 345评论 0 0