功能:提供排序切片;用户自顶级数据集以及相关功能的函数;
sort包主要针对:[]int
、[]float64
、[]string
以及其他自定义切片的排序(默认是从小到大排序)
一般输入
type IntSlice []int
type Float64Slice
type StringSlice
//每个组功能都差不多,只是参数不同
//整数
func Ints(a []int)//给切片排序
func IntsAreSorted(a []int) bool//检查切片是否有序
func SearchInts(a []int, x int)int
//浮点数
func F1oat64s(a []float64)
func Float64sAreSorted(a [ ] float64) bool
func SearchFloat64s(a [ ]float64,x float64) int
func SearchFloat64s(a [] flaot64, x float64) bool
//字符串(如果是数字,就按照数字排序,如果是英文,就是abcd,如果是中文,就按照byte大小)
func Strings(a []string)
func StringsAreSorted(a [ ]string) bool
func SearchStrings(a [ ] string,x string) int
//自定义类型
func Sort(data Interface) //也是进行排序,sort vs stable???
func Stable(data Interface) //按照less的方法进行排序
func Reverse(data Interface) Interface
func ISSorted(data Interface) bool ,
func Search(n int, f func(int) bool) int
type Interface interface {
Len() int // Len方法返回集合中的元素个数
Less(i,j int) bool // i>j, 该方法返回索引的元素是否比索引j的元素小、
Swap(i,j int) //交换i,j的值
}
实例:
- 对汉字进行排序
复杂输入
三种切片的方法都是一样的,只是分别针对int切片、float64切片、 strings切片这 三种不同的类型。
然后三种结果都有五个公开方法
func (p xxxSlice) Len() int // 切片长度
func (p xxxSlice) Less(i, j int) bool
func (p xxxSlice) Swap(i, j int)
func (p xxxSlice) Search(x xxx) int
//这个和后面那个功能一样
func (p xxxSlice) Sort()
实例
- 复杂结构(简单结构我们用函数即可,复杂结构,用接口和方法,方法自己去实现)
[][]int
(实例中,less自定义去比较第二个位置)
- 实例1:
map[string]int
- 实例2:结构体