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 空map和未初始化map的注意事项说明
Apr 29 Golang
解决go在函数退出后子协程的退出问题
Apr 30 Golang
关于golang高并发的实现与注意事项说明
May 08 Golang
go xorm框架的使用
May 22 Golang
Go语言设计模式之结构型模式
Jun 22 Golang
详解Go语言Slice作为函数参数的使用
Jul 02 Golang
Go中的条件语句Switch示例详解
Aug 23 Golang
golang实现浏览器导出excel文件功能
Mar 25 Golang
golang定时器
Apr 14 Golang
详解Go语言中配置文件使用与日志配置
Jun 01 Golang
基于Python实现西西成语接龙小助手
Aug 05 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 编写大型网站问题集
2010/05/07 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
Yii框架安装简明教程
2020/05/15 PHP
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
Jquery选择子控件"大于号"和" "区别介绍及使用示例
2013/06/25 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
wxPython 入门教程
2008/10/07 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
Python爬豆瓣电影实例
2018/02/23 Python
python执行精确的小数计算方法
2019/01/21 Python
python3实现猜数字游戏
2020/12/07 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
python爬虫请求头的使用
2020/12/01 Python
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
大型演出策划方案
2014/05/28 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
超市理货员岗位职责
2014/07/04 职场文书
夏季药店促销方案
2014/08/22 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
护理培训心得体会
2016/01/22 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
Python基础之元编程知识总结
2021/05/23 Python
方法汇总:Python 安装第三方库常用
2022/04/26 Python