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 相关文章推荐
golang正则之命名分组方式
Apr 25 Golang
golang json数组拼接的实例
Apr 28 Golang
golang elasticsearch Client的使用详解
May 05 Golang
go设置多个GOPATH的方式
May 05 Golang
完美解决golang go get私有仓库的问题
May 05 Golang
Golang 编译成DLL文件的操作
May 06 Golang
基于Go语言构建RESTful API服务
Jul 25 Golang
Go 语言中 20 个占位符的整理
Oct 16 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
Golang解析JSON对象
Apr 30 Golang
Go语言测试库testify使用学习
Jul 23 Golang
在ubuntu下安装go开发环境的全过程
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
7个超级实用的PHP代码片段
2011/07/11 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
linux下php上传文件注意事项
2016/06/11 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
Python FTP操作类代码分享
2014/05/13 Python
Python装饰器使用示例及实际应用例子
2015/03/06 Python
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
大学运动会入场词
2014/02/22 职场文书
大课间体育活动方案
2014/03/12 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
创业计划书之烤红薯
2019/09/26 职场文书