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 相关文章推荐
一文读懂go中semaphore(信号量)源码
Apr 03 Golang
Golang 正则匹配效率详解
Apr 25 Golang
用golang如何替换某个文件中的字符串
Apr 25 Golang
golang在GRPC中设置client的超时时间
Apr 27 Golang
Golang中interface{}转为数组的操作
Apr 30 Golang
完美解决golang go get私有仓库的问题
May 05 Golang
Go Plugins插件的实现方式
Aug 07 Golang
golang中的struct操作
Nov 11 Golang
Go 中的空白标识符下划线
Mar 25 Golang
Golang map映射的用法
Apr 22 Golang
Go gRPC进阶教程gRPC转换HTTP
Jun 16 Golang
Python测试框架pytest核心库pluggy详解
Aug 05 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
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
js中settimeout方法加参数
2014/02/28 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
django 模版关闭转义方式
2020/05/14 Python
质检部岗位职责
2013/11/11 职场文书
会务接待方案
2014/02/27 职场文书
工程建设实施方案
2014/03/14 职场文书
加入学生会演讲稿
2014/04/24 职场文书
节能环保演讲稿
2014/08/28 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
三八妇女节标语
2014/10/09 职场文书
就业推荐表院系意见
2015/06/05 职场文书
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle