golang 借助于内置sort.slice包实现排序
程序员文章站
2022-03-11 18:41:41
...
golang使用内置sort.slice实现排序
使用sort.Slice()方法实现数组的排序
使用内置的sort.slice接口实现数组的排序是我目前所知的比较简单的一种排序方式,可以很快的实现数组的排序,个人比较推崇。我所知道的另外一种基于sort包的排序,需要首先写一个结构体实现sort包下通用的接口,相比之下较为麻烦(个人不太推崇),但是如果对细节有要求的话,可以使用该方式实现数组的排序
操作系统和开发环境
操作系统:windows10
go:1.10
ide: goland
sort.Slice()介绍
// Slice sorts the provided slice given the provided less function.
//
// The sort is not guaranteed to be stable. For a stable sort, use
// SliceStable.
//
// The function panics if the provided interface is not a slice.
func Slice(slice interface{}, less func(i, j int) bool)
slice接口可以按照你所提供的less方法,对数组进行排序,如果提供的第一个参数不是一个数组(切片),函数将会panic
小注:官方库也提供了slicestable这种针对数组切片更稳定的排序方法,有兴趣的可以详细了解一下
实现(直接上代码了)
只需要将数组作为第一个参数传入,并且在第二个函数参数中定义好排序的规则之后,就可以比较快的实现排序了
ps:是不是很快
package main
import (
"fmt"
"sort"
)
type SortSliceTest struct {
Num int
Name string
}
func main() {
arrs := InitArrs()
sort.Slice(arrs, func(i, j int) bool {
return arrs[i].Num > arrs[j].Num
})
for k, v := range arrs {
fmt.Println("index", k, "value", v)
}
}
func InitArrs() (arrs []SortSliceTest) {
arr1 := SortSliceTest{
Num: 3,
Name: "arr1",
}
arr2 := SortSliceTest{
Num: 1,
Name: "arr2",
}
arr3 := SortSliceTest{
Num: 5,
Name: "arr3",
}
arr4 := SortSliceTest{
Num: 2,
Name: "arr4",
}
arrs = append(arrs, arr1, arr2, arr3, arr4)
return
}
运行结果截图
上一篇: Jave栈实现
下一篇: 交换两个变量的值(不借助于第三个变量)