Golang ort 中的sortInts 方法


Posted in Golang onApril 24, 2022

前言:

排序算法一直是很经常使用的功能。Go 语言标准库为我们提供了方便快捷的 ​​sort​​ 包 ,这个包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序。

一、从有序数据中查找值

我们知道,常见查找算法有顺序查找和二分查找。而二分查找就是基于有序数据的查找方法。而 Go 语言中的 ​​sort​​ 包就提供了以下几种查找的方法:

  • SearchInts(slice ,val)
  • SearchFloats(slice, val)
  • SearchStrings(slice, val)
  • Searh(count, testFunc)

二、SearchInts

​SearchInts()​​ 函数是 sort 包的内置函数,用于在排序的整数切片中搜索给定元素 ​​x​​,并返回 ​​Search()​​ 指定的索引。

它接受两个参数(​​a []int, x int​​):

  • a 是 int 类型的排序切片,
  • x 是要搜索的 int 类型元素,并返回​​Search()​​ 指定的索引

注意:如果 ​​x​​ 不存在,可能是 ​​len(a)​​,​​SearchInts()​​ 结果是插入元素 ​​x​​ 的索引。切片必须按升序排序。

语法结构如下:

func SearchInts(a []int, x int) int

返回值: ​​SearchInts()​​ 函数的返回类型是 int,它返回 Search 指定的索引。

三、举例

例子一:

package main

import (
"fmt"
"sort"
)

func main() {

ints := []int{2025, 2019, 2012, 2002, 2022}

sortInts := make([]int, len(ints))

copy(sortInts, ints)

sort.Ints(sortInts)

fmt.Println("Ints: ", ints)
fmt.Println("Ints Sorted: ", sortInts)

indexOf2022 := sort.SearchInts(sortInts, 2022)
fmt.Println("Index of 2022: ", indexOf2022)
}

运行该代码:

$ go run main.go
Ints: [2025 2019 2012 2002 2022]
Ints Sorted: [2002 2012 2019 2022 2025]
Index of 2022: 3

例子二:

package main

import (
"fmt"
"sort"
)

func main() {
a := []int{10, 20, 25, 27, 30}

x := 25
i := sort.SearchInts(a, x)
fmt.Printf("Element %d found at index %d in %v\n", x, i, a)

x = 5
i = sort.SearchInts(a, x)
fmt.Printf("Element %d not found, it can inserted at index %d in %v\n", x, i, a)

x = 40
i = sort.SearchInts(a, x)
fmt.Printf("Element %d not found, it can inserted at index %d in %v\n", x, i, a)
}

运行结果:

Element 25 found at index 2 in [10 20 25 27 30]
Element 5 not found, it can inserted at index 0 in [10 20 25 27 30]
Element 40 not found, it can inserted at index 5 in [10 20 25 27 30]

到此这篇关于Go 语言sort 中的sortInts 方法的文章就介绍到这了!


Tags in this post...

Golang 相关文章推荐
golang 实现对Map进行键值自定义排序
Apr 28 Golang
golang goroutine顺序输出方式
Apr 29 Golang
完美解决golang go get私有仓库的问题
May 05 Golang
解决golang 关于全局变量的坑
May 06 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
Golang Gob编码(gob包的使用详解)
May 07 Golang
go web 预防跨站脚本的实现方式
Jun 11 Golang
Go语言空白表示符_的实例用法
Jul 04 Golang
golang实现一个简单的websocket聊天室功能
Oct 05 Golang
Golang中channel的原理解读(推荐)
Oct 16 Golang
Go gorilla securecookie库的安装使用详解
Aug 14 Golang
Golang 切片(Slice)实现增删改查
Apr 22 #Golang
Golang 结构体数据集合
Apr 22 #Golang
Golang map映射的用法
Apr 22 #Golang
Golang bufio详细讲解
Apr 21 #Golang
Go获取两个时区的时间差
Apr 20 #Golang
Golang jwt身份认证
实现GO语言对数组切片去重
Apr 20 #Golang
You might like
PHP中的加密功能
2006/10/09 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
php中CI操作多个数据库的代码
2012/07/05 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
php简单生成随机数的方法
2015/07/30 PHP
php实现分页显示
2015/11/03 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
利用javascript查看html源文件
2006/11/08 Javascript
Prototype RegExp对象 学习
2009/07/19 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
python检查指定文件是否存在的方法
2015/07/06 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
如何使用python切换hosts文件
2020/04/29 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
高中美术教师事迹材料
2014/08/22 职场文书
初二学生评语大全
2014/12/26 职场文书
写给老师的感谢信
2015/01/20 职场文书
借条如何写
2015/05/26 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
Python深度学习之实现卷积神经网络
2021/06/05 Python