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语言切片前或中间插入项与内置copy()函数详解
Apr 27 Golang
Golang 实现超大文件读取的两种方法
Apr 27 Golang
go语言中json数据的读取和写出操作
Apr 28 Golang
golang 如何用反射reflect操作结构体
Apr 28 Golang
彻底理解golang中什么是nil
Apr 29 Golang
go语言中GOPATH GOROOT的作用和设置方式
May 05 Golang
golang fmt格式“占位符”的实例用法详解
Jul 04 Golang
golang内置函数len的小技巧
Jul 25 Golang
Golang 链表的学习和使用
Apr 19 Golang
Golang 实现WebSockets
Apr 24 Golang
Golang gRPC HTTP协议转换示例
Jun 16 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新建文件自动编号的思路与实现
2011/06/27 PHP
php轻松实现文件上传功能
2016/03/03 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
python自动化测试实例解析
2014/09/28 Python
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
简单说明Python中的装饰器的用法
2015/04/24 Python
Python中的连接符(+、+=)示例详解
2017/01/13 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
python如何爬取个性签名
2018/06/19 Python
python 表格打印代码实例解析
2019/10/12 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
英国行业制服供应商:Alexandra
2019/09/14 全球购物
室内设计专业学生的自我评价分享
2013/11/27 职场文书
药剂专业学生求职信范文
2013/12/28 职场文书
考试不及格检讨书
2014/01/09 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
医院反腐倡廉演讲稿
2014/09/16 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
交通事故调解协议书
2015/05/20 职场文书
机器人瓦力观后感
2015/06/12 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
nginx.conf配置文件结构小结
2022/04/08 Servers