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生成Excel文档的方法步骤
Jun 09 Golang
Go遍历struct,map,slice的实现
Jun 13 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
入门学习Go的基本语法
Jul 07 Golang
Go Plugins插件的实现方式
Aug 07 Golang
golang 语言中错误处理机制
Aug 30 Golang
Golang表示枚举类型的详细讲解
Sep 04 Golang
Go语言基础切片的创建及初始化示例详解
Nov 17 Golang
如何利用golang运用mysql数据库
Mar 13 Golang
详解Go语言中Get/Post请求测试
Jun 01 Golang
Go调用Rust方法及外部函数接口前置
Jun 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中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
一个JS翻页效果
2007/07/23 Javascript
Exjs 入门篇
2010/04/07 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python中的日期时间处理详解
2016/11/17 Python
python3.x上post发送json数据
2018/03/04 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
Django 开发环境配置过程详解
2019/07/18 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
中国医药集团国药在线:国药网
2017/02/06 全球购物
机械系大学毕业生推荐信
2013/11/27 职场文书
护理专业自荐信
2013/12/03 职场文书
党校培训自我鉴定
2014/02/01 职场文书
个人实习生的自我评价
2014/02/16 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
区域经理岗位职责
2015/02/02 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
简述Java中throw-throws异常抛出
2021/08/07 Java/Android
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js