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语言-为什么返回值为接口类型,却返回结构体
Apr 24 Golang
解决go在函数退出后子协程的退出问题
Apr 30 Golang
解决golang结构体tag编译错误的问题
May 02 Golang
golang gopm get -g -v 无法获取第三方库的解决方案
May 05 Golang
Golang标准库syscall详解(什么是系统调用)
May 25 Golang
go语言中http超时引发的事故解决
Jun 02 Golang
深入理解go slice结构
Sep 15 Golang
Go语言基础map用法及示例详解
Nov 17 Golang
golang生成并解析JSON
Apr 14 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 Golang
在ubuntu下安装go开发环境的全过程
Aug 05 Golang
go goth封装第三方认证库示例详解
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去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
python类继承与子类实例初始化用法分析
2015/04/17 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
python实现人工蜂群算法
2020/09/18 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
什么是Web Service?
2012/07/25 面试题
物流司机岗位职责
2013/12/28 职场文书
小学生安全保证书
2014/02/01 职场文书
学生会竞聘书范文
2014/03/31 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
走群众路线学习笔记
2014/11/06 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
浅谈MySQL中的六种日志
2022/03/23 MySQL