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中实现给gif、png、jpeg图片添加文字水印
Apr 26 Golang
解决Golang中ResponseWriter的一个坑
Apr 27 Golang
golang 如何通过反射创建新对象
Apr 28 Golang
golang import自定义包方式
Apr 29 Golang
解决golang post文件时Content-Type出现的问题
May 02 Golang
解决Goland 同一个package中函数互相调用的问题
May 06 Golang
golang 实现时间戳和时间的转化
May 07 Golang
Golang中异常处理机制详解
Jun 08 Golang
golang为什么要统一错误处理
Apr 03 Golang
Golang日志包的使用
Apr 20 Golang
Golang解析JSON对象
Apr 30 Golang
详解Go语言中配置文件使用与日志配置
Jun 01 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 编写的日历
2006/10/09 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
php 数组的一个悲剧?
2011/05/11 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
php获取从html表单传递数组的方法
2015/03/20 PHP
checkbox 多选框 联动实现代码
2008/10/22 Javascript
jQuery插件 tabBox实现代码
2010/02/09 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
javascript数组详解
2014/10/22 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
Python正则表达式匹配HTML页面编码
2015/04/08 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
最新的大学生找工作自我评价
2013/09/29 职场文书
英语文学专业学生的自我评价
2013/10/31 职场文书
趣味体育活动方案
2014/02/08 职场文书
新教师培训方案
2014/06/08 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
工作感言一句话
2015/08/01 职场文书