前言
今天写题,用到了sort包,当时不是很了解改包的使用方法,晚上下课后,过来看了下,故写下此篇文章,助于自己的学习
1.常用方法
1.Ints() // 针对于整数类型排序
2.Float64s() // 浮点数类型排序
3.Strings() //字符串类型排序
4.StringsAreSotred() // 判断传入的string类型数组或者切片是否有序
5.IntsAreSorted()
6.Float64sAreSorted()
测试代码:
// 1.整数类型排序
intValue := []int{10,20,5,8}
sort.Ints(intValue)
fmt.Println("Ints",intValue)
// 2.对浮点类型排序,只能对与64位类型
float64Val := []float64{10.5,20.5,8.5,5.5}
sort.Float64s(float64Val)
fmt.Println("float64",float64Val)
// 3.对字符串类型排序
stringVal := []string{"c","b","a"}
sort.Strings(stringVal)
fmt.Println("string",stringVal)
// 判断某个切片是否已经有序
str := sort.StringsAreSorted(stringVal)
fmt.Println("isstr:",str)
输出结果
经过测试,发现判断某个数组或者切片是否有序的方法,只针对于升序,而且排序规则也默认为升序.如果想要降序排序,我们可以修改sort的排序规则:
也就是需要实现以下3个接口:
Len() // 长度
Less() // 指定排序规则
Swap() // 交换
测试代码:
type arr []int
func (a arr) Len() int {
return len(a)
}
// Less 指定排序规则
func (a arr) Less(i,j int) bool {
return a[i] > a[j]
}
// Swap 交换
func (a arr) Swap(i,j int) {
a[i],a[j] = a[j],a[i]
}
func main() {
nums := []int{1,2,3,4,5,6}
//转换数据类型再排序
sort.Sort(arr(nums))
//或者直接声明改类型
a := arr{3,4,5,6,7}
sort.Sort(a)
fmt.Println(a)
fmt.Println(nums)
}
结果:
这样就实现降序排序了~
本篇文章就到这里,如有错误,欢迎指出.