【Golang】✔️走进 Go 语言✔️ 第十四课 排序
【摘要】
【Golang】✔️走进 Go 语言✔️ 第十四课 排序
概述sort自定义排序
概述
Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (...
概述
Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (第 14 课)

sort
Go 语言的 sort 包实现了内置和用户定义类型的排序.
例 1:
package main
import (
"fmt"
"sort"
)
func main() {
// 定义数组
var array = []int{1, 5, 4, 6, 2, 3}
fmt.Println(array)
// 判断是否排序
is_sort := sort.IntsAreSorted(array)
fmt.Println("是否排序: ", is_sort)
// 数组排序
sort.Ints(array)
fmt.Println(array)
// 判断是否排序
is_sort = sort.IntsAreSorted(array)
fmt.Println("是否排序: ", is_sort)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
输出结果:
[1 5 4 6 2 3]
是否排序: false
[1 2 3 4 5 6]
是否排序: true
- 1
- 2
- 3
- 4
例 2:
package main
import (
"fmt"
"sort"
)
func main() {
// 定义数组
var array = []string {"b", "a", "d", "c"}
fmt.Println(array)
// 判断是否排序
is_sort := sort.StringsAreSorted(array)
fmt.Println("是否排序: ", is_sort)
// 数组排序
sort.Strings(array)
fmt.Println(array)
// 判断是否排序
is_sort = sort.StringsAreSorted(array)
fmt.Println("是否排序: ", is_sort)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
输出结果:
[b a d c]
是否排序: false
[a b c d]
是否排序: true
- 1
- 2
- 3
- 4
自定义排序
一个内置的排序算法需要有三个东西: 序列长度, 两个元素比较结果, 两个元素的交换方式.

根据字符串长短排序:
package main
import (
"fmt"
"sort"
)
type ByLength []string
func (s ByLength) Len() int {
return len(s)
}
func (s ByLength) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s ByLength) Less(i, j int) bool {
return len(s[i]) < len(s[j])
}
func main() {
// 定义数组
var array = []string {"a", "ghij", "bc", "def"}
// 排序
sort.Strings(ByLength(array))
// 调试输出
fmt.Print(array)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
输出结果:
[a bc def ghij]
- 1

文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。
原文链接:iamarookie.blog.csdn.net/article/details/119693951
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)