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 相关文章推荐
win10下go mod配置方式
Apr 25 Golang
go原生库的中bytes.Buffer用法
Apr 25 Golang
Go语言中break label与goto label的区别
Apr 28 Golang
基于Go Int转string几种方式性能测试
Apr 28 Golang
彻底理解golang中什么是nil
Apr 29 Golang
golang 比较浮点数的大小方式
May 02 Golang
go语言中fallthrough的用法说明
May 06 Golang
Golang生成Excel文档的方法步骤
Jun 09 Golang
Go 语言中 20 个占位符的整理
Oct 16 Golang
如何利用golang运用mysql数据库
Mar 13 Golang
Go语言安装并操作redis的go-redis库
Apr 14 Golang
Go web入门Go pongo2模板引擎
May 20 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+DBM的同学录程序(2)
2006/10/09 PHP
php float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
AngularJs 常用的过滤器
2017/05/15 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
Vue表单及表单绑定方法
2018/09/04 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
Python中的yield浅析
2014/06/16 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
机械系大学毕业生推荐信
2013/11/27 职场文书
协议书的格式
2014/04/23 职场文书
个性车贴标语
2014/06/24 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
公司财务部岗位职责
2015/04/14 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
男生贾里读书笔记
2015/06/30 职场文书
解决Redis启动警告问题
2022/02/24 Redis
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS