golang sort包对int排序

在Go语言中,sort包提供了对切片的排序功能。可以使用sort包对int切片进行排序,本文将详细介绍如何使用sort包对int切片进行排序。
使用sort包进行int排序
首先,我们需要导入sort包:
import "sort"
接下来,我们定义一个int切片,并给其赋予一些随机值:
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 2, 8, 1, 9, 3}
fmt.Println("Before sorting:", nums)
}
运行以上代码,输出为:
Before sorting: [5 2 8 1 9 3]
接下来,我们可以使用sort包的sort.Ints()方法对切片进行排序:
sort.Ints(nums)
fmt.Println("After sorting:", nums)
完整的代码如下:
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 2, 8, 1, 9, 3}
fmt.Println("Before sorting:", nums)
sort.Ints(nums)
fmt.Println("After sorting:", nums)
}
运行以上代码,输出为:
Before sorting: [5 2 8 1 9 3]
After sorting: [1 2 3 5 8 9]
自定义排序
除了使用sort.Ints()方法对int切片进行排序,我们还可以自定义排序规则。例如,我们可以按照数字的绝对值大小进行排序:
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, -2, 8, -1, 9, -3}
fmt.Println("Before sorting:", nums)
sort.Slice(nums, func(i, j int) bool {
return abs(nums[i]) < abs(nums[j])
})
fmt.Println("After sorting:", nums)
}
func abs(n int) int {
if n < 0 {
return -n
}
return n
}
运行以上代码,输出为:
Before sorting: [5 -2 8 -1 9 -3]
After sorting: [-1 -2 3 5 -3 8]
自定义类型排序
除了int类型,我们还可以使用sort包对自定义类型进行排序。例如,我们可以定义一个Person结构体,按照年龄进行排序:
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
type ByAge []Person
func (p ByAge) Len() int { return len(p) }
func (p ByAge) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
func (p ByAge) Less(i, j int) bool { return p[i].Age < p[j].Age }
func main() {
people := []Person{
{Name: "Alice", Age: 30},
{Name: "Bob", Age: 25},
{Name: "Charlie", Age: 35},
}
fmt.Println("Before sorting:", people)
sort.Sort(ByAge(people))
fmt.Println("After sorting:", people)
}
运行以上代码,输出为:
Before sorting: [{Alice 30} {Bob 25} {Charlie 35}]
After sorting: [{Bob 25} {Alice 30} {Charlie 35}]
总结
通过使用sort包,我们可以方便地对int类型和自定义类型进行排序。除了sort.Ints()和sort.Sort()方法,还可以自定义排序规则。在实际应用中,根据不同的需求选择合适的排序方法进行排序操作。
极客笔记