功能:提供排序切片;用户自顶级数据集以及相关功能的函数;

sort包主要针对:[]int[]float64[]string以及其他自定义切片的排序(默认是从小到大排序)

一般输入

  1. type IntSlice []int
  2. type Float64Slice
  3. type StringSlice
  1. //每个组功能都差不多,只是参数不同
  2. //整数
  3. func Ints(a []int)//给切片排序
  4. func IntsAreSorted(a []int) bool//检查切片是否有序
  5. func SearchInts(a []int, x int)int
  6. //浮点数
  7. func F1oat64s(a []float64)
  8. func Float64sAreSorted(a [ ] float64) bool
  9. func SearchFloat64s(a [ ]float64x float64) int
  10. func SearchFloat64s(a [] flaot64 x float64) bool
  11. //字符串(如果是数字,就按照数字排序,如果是英文,就是abcd,如果是中文,就按照byte大小)
  12. func Strings(a []string)
  13. func StringsAreSorted(a [ ]string) bool
  14. func SearchStrings(a [ ] stringx string) int
  15. //自定义类型
  16. func Sort(data Interface) //也是进行排序,sort vs stable???
  17. func Stable(data Interface) //按照less的方法进行排序
  18. func Reverse(data Interface) Interface
  19. func ISSorted(data Interface) bool
  20. func Search(n int, f func(int) bool) int
  1. type Interface interface {
  2. Len() int // Len方法返回集合中的元素个数
  3. Less(ij int) bool // i>j, 该方法返回索引的元素是否比索引j的元素小、
  4. Swap(ij int) //交换i,j的值
  5. }

实例:

  1. 对汉字进行排序

sort包--排序 - 图1

复杂输入

三种切片的方法都是一样的,只是分别针对int切片、float64切片、 strings切片这 三种不同的类型。

然后三种结果都有五个公开方法

  1. func (p xxxSlice) Len() int // 切片长度
  2. func (p xxxSlice) Less(i, j int) bool
  3. func (p xxxSlice) Swap(i, j int)
  4. func (p xxxSlice) Search(x xxx) int
  5. //这个和后面那个功能一样
  6. func (p xxxSlice) Sort()

实例

  1. 复杂结构(简单结构我们用函数即可,复杂结构,用接口和方法,方法自己去实现)
    1. [][]int(实例中,less自定义去比较第二个位置)
      sort包--排序 - 图2
  2. 实例1:map[string]int

sort包--排序 - 图3

  1. 实例2:结构体
    sort包--排序 - 图4