一、包说明
这个包是一个golang内置的切片排序包,除了排序外尚有一些别的的方法,可以对一些根本的可以比力巨细的范例的切片举行排序,也可以通过实现排序接口的几个特定方法实现自界说排序。
二、简单的利用方法
1、可以利用sort.Ints()、sort.Strings()等内置方法对根本数据范例的切片举行排序
2、由于切片属于引用范例,以是我们只须要将须要排序的切片传给排序方法就可以了不须要写成sort.Strings(&strs) 或 strs = sort.Strings(strs),这两种写法都会导致编译失败,利用方式很简单这里不再做过多说明。
三、自界说排序
1、sort.Ints()、sort.Strings()等方法都是按升序排序的,如果我们盼望按降序排序就须要我们自界说排序规则,自界说排序须要我们实现接口的Len()、Less(i,j int)、Swap(i,j int)这三个方法。重要是实现Less(i,j int)方法,这个方法内里写排序算法(两个元素比力巨细的方式),Len() 方法是用来盘算切片长度的直接return len(data)就可以了,Swap(i,j int) 这个方法在调用排序方法后变动两个元素的位置可以写死成 ints, ints[j] = ints[j], ints,当Less()返回True 时就会调用Swap() 方法,变动两个相邻元素的位置。
2、对int切片按降序排序
package UnitTestimport ( "fmt" "sort" "testing")type IntList []intfunc (ints IntList) Len() int { return len(ints)}func (ints IntList) Less(i, j int) bool { //返回True时会调用Swap方法变动两个元素的位置 return ints > ints[j] // (i>j),ints < ints[j] 表现按升序排序,ints > ints[j] 表现按降序排序}func (ints IntList) Swap(i, j int) { ints, ints[j] = ints[j], ints}func TestSort(t *testing.T) { ints := IntList{} ints = []int{1, 2, 3, 4, 56, 6} sort.Sort(ints) fmt.Printf("%v\n", ints)}四、使专心得
1、sort.Strings()方法并不能对字符串数字排序,固然不会报错但是结果是错的,貌似是以字符串的第一位排的
2、应用场景,固定排序。 |