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
这个属于排序的规则:也就是你写在函数里面的东西- 例子:对结构体内部的某个成员进行排序
3.自定义查找
类型 | 功能 |
---|---|
sort.Search(n int,f func(i int)bool)int | 常用与在有序的,可索引的,范围是[0,n) 数据结构中查找值的索引 i (注意n 是切片的长度) |
例子:找一个比v大的第一个下标值 | |
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)int 和Sort() 方法 | |