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 02 Golang
win10下go mod配置方式
Apr 25 Golang
Golang 如何实现函数的任意类型传参
Apr 29 Golang
golang 比较浮点数的大小方式
May 02 Golang
goland 设置project gopath的操作
May 06 Golang
Go 在 MongoDB 中常用查询与修改的操作
May 07 Golang
关于golang高并发的实现与注意事项说明
May 08 Golang
Go timer如何调度
Jun 09 Golang
golang fmt格式“占位符”的实例用法详解
Jul 04 Golang
Golang 并发下的问题定位及解决方案
Mar 16 Golang
Golang并发工具Singleflight
May 06 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” 彩蛋进行敏感信息获取
2013/08/07 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
九种原生js动画效果
2015/11/11 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
进一步理解Python中的函数编程
2015/04/13 Python
Python实现的Excel文件读写类
2015/07/30 Python
wxPython的安装与使用教程
2018/08/31 Python
python 函数内部修改外部变量的方法
2018/12/18 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
新年团拜会主持词
2014/04/02 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
2014年教学工作总结
2014/11/13 职场文书
入党自荐书范文
2015/03/05 职场文书
初一军训感言
2015/08/01 职场文书