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 26 Golang
golang通过递归遍历生成树状结构的操作
Apr 28 Golang
解决Go gorm踩过的坑
Apr 30 Golang
golang switch语句的灵活写法介绍
May 06 Golang
Go 自定义package包设置与导入操作
May 06 Golang
GoLang中生成UUID唯一标识的实现
May 08 Golang
再次探讨go实现无限 buffer 的 channel方法
Jun 13 Golang
详解Go语言Slice作为函数参数的使用
Jul 02 Golang
go开发alertmanger实现钉钉报警
Jul 16 Golang
Go语言读取txt文档的操作方法
Jan 22 Golang
Go获取两个时区的时间差
Apr 20 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
虫族 Zerg 历史背景
2020/03/14 星际争霸
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
Windows下搭建python开发环境详细步骤
2020/07/20 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
如何用python整理附件
2018/05/13 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
韩国11街:11STREET
2018/03/27 全球购物
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
Java程序员面试90题
2013/10/19 面试题
十八届三中全会宣传方案
2014/02/21 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
广播体操比赛主持词
2015/06/29 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
Python数据处理的三个实用技巧分享
2022/04/01 Python