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
Go缓冲channel和非缓冲channel的区别说明
Apr 25 Golang
Golang中interface{}转为数组的操作
Apr 30 Golang
Golang: 内建容器的用法
May 05 Golang
Golang中异常处理机制详解
Jun 08 Golang
再次探讨go实现无限 buffer 的 channel方法
Jun 13 Golang
golang内置函数len的小技巧
Jul 25 Golang
Golang使用Panic与Recover进行错误捕获
Mar 22 Golang
如何解决goland,idea全局搜索快捷键失效问题
Apr 03 Golang
Golang 链表的学习和使用
Apr 19 Golang
Golang获取List列表元素的四种方式
Apr 20 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各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
js 实现菜单上下显示附效果图
2013/11/21 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python中的文件和目录操作实现代码
2011/03/13 Python
Python编程中对文件和存储器的读写示例
2016/01/25 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
python障碍式期权定价公式
2019/07/19 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
python selenium 获取接口数据的实现
2020/12/07 Python
HTML5拖拽API经典实例详解
2018/04/20 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
事业单位个人应聘自荐信
2013/09/21 职场文书
大专毕业生自我评价分享
2013/11/10 职场文书
运动会广播稿100字
2014/01/11 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
出生公证书样本
2014/04/04 职场文书
植树节口号
2014/06/21 职场文书
教师四风问题整改措施
2014/09/25 职场文书
教育见习报告范文
2014/11/03 职场文书
运动会致辞稿
2015/07/29 职场文书
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技