【Golang】✔️走进 Go 语言✔️ 第十四课 排序

举报
我是小白呀iamarookie 发表于 2021/09/10 01:04:11 2021/09/10
【摘要】 【Golang】✔️走进 Go 语言✔️ 第十四课 排序 概述sort自定义排序 概述 Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (...

【Golang】✔️走进 Go 语言✔️ 第十四课 排序

概述

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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。