go语言 Sort包

Sort包


1.常见的类型进行排序

类型 功能
sort.Float64s([]float64) float64切片进行升序排序
sort.Float64sAreSorted([]float64)bool 判断float64切片是否为升序
sort.SearchFloat64s([]float64,float64)int 在升序切片中查找给定值,找到则返回下标,找不到则返回适合插入值的下标
类型 功能
sort.Ints([]int) int切片进行升序排序
sort.IntsAreSorted([]int)bool 判断int切片是否为升序
sort.SearchInts([]int,int)int 在升序切片中查找给定值,找到则返回下标,找不到则返回适合插入值的下标
类型 功能
sort.Strings([]string) 对字符串进行升序排序
sort.StringsAreSorted([]string)bool 判断字符串是否为升序
sort.SearchStrings([]string,string)int 在升序切片中查找给定值,找到则返回下标,找不到则返回适合插入值的下标

2.自定义排序

类型 功能
sort.Slice([]Slice,func(i,j int)bool{}) 对指定切片按照指定规则进行排序
sort.SliceSorted([]Slice,func(i,j int)bool{})bool 判断指定切片是否已经按照指定规则进行排序
sort.SliceStable([]Slice,func(i,j int)bool{}) 对指定切片按照指定规则进行排序,并对相等元素保留原来相对位置
  • 介绍
    • func(i,j int)bool这个属于排序的规则:也就是你写在函数里面的东西
    • 例子:对结构体内部的某个成员进行排序
      go语言 Sort包_第1张图片

3.自定义查找

类型 功能
sort.Search(n int,f func(i int)bool)int 常用与在有序的,可索引的,范围是[0,n)数据结构中查找值的索引 i(注意n是切片的长度)
例子:找一个比v大的第一个下标值
go语言 Sort包_第2张图片

4.Sort.Interface

  • sort定义的接口,要求实现Len()int(长度),Less(i,j int)bool(排序规则),Swap(i,j int)(交换)方法
  • 更加灵活(自己写方法)
类型 功能
sort.Sort(sort.interface) 排序
sort.Reverse(sort.Interface)sort.Interface 在排序中反转sort.Sort(sort.Reverse(sort.interface))
sort.Stable(sort.interface) 排序,并对相等元素保留原始相对位置
sort.Float64Slice sort包定义的数据类型,为[]float64实现了sort.interface接口
sort.IntSlice sort包定义数据类型,为[]int实现了sort.Interface接口
sort.StringSlice sort包定义数据类型,为[]string实现了sort.Interface接口
这三个类型额外提供了Search(x)intSort()方法
go语言 Sort包_第3张图片

你可能感兴趣的:(golang,java,算法)