func Strings(a []string)
Strings函数对string类型的切片进行升序排序。
示例:
代码语言:javascript复制package main
import (
"fmt"
"sort"
)
func main() {
arr := []string{"apple", "banana", "pear", "orange", "grape"}
sort.Strings(arr)
fmt.Println(arr) // Output: [apple banana grape orange pear]
}
func Reverse(data Interface) Interface
Reverse函数返回一个实现了sort.Interface接口的新对象,该对象可以对被排序的元素进行反向排序。
示例:
代码语言:javascript复制package main
import (
"fmt"
"sort"
)
type myInts []int
func (a myInts) Len() int { return len(a) }
func (a myInts) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a myInts) Less(i, j int) bool { return a[i] < a[j] }
func main() {
arr := myInts{3, 1, 4, 1, 5, 9, 2, 6, 5, 3}
sort.Sort(sort.Reverse(arr))
fmt.Println(arr) // Output: [9 6 5 5 4 3 3 2 1 1]
}
上面的例子中,我们定义了一个myInts类型,该类型实现了sort.Interface接口。然后,我们使用sort.Reverse函数对myInts类型的切片进行反向排序。
func Search(n int, f func(int) bool) int
Search函数使用二分查找算法在长度为n的有序切片中查找满足f函数的最小索引。如果不存在这样的索引,则返回n。
示例:
代码语言:javascript复制package main
import (
"fmt"
"sort"
)
func main() {
arr := []int{1, 3, 5, 7, 9}
fmt.Println(sort.Search(len(arr), func(i int) bool { return arr[i] >= 5 })) // Output: 2
}
上面的例子中,我们定义了一个长度为5的有序整型切片,并使用sort.Search函数查找大于或等于5的元素的最小索引。由于切片中的第3个元素为5,因此该函数返回2。
func SearchInts(a []int, x int) int
SearchInts函数使用二分查找算法在已排序的整型切片a中查找x的索引。如果x不存在于a中,则返回值为将x插入a后的索引。
示例:
代码语言:javascript复制package main
import (
"fmt"
"sort"
)
func main() {
arr := []int{1, 3, 5, 7, 9}
fmt.Println(sort.SearchInts(arr, 5)) // Output: 2
}
上面的例子中,我们定义了一个长度为5的有序整型切片,并使用sort.SearchInts函数查找5的索引。由于切片中的第3个元素为5,因此该函数返回2。