前言:
排序算法一直是很经常使用的功能。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
的索引。切片必须按升序排序。
语法结构如下:
1
|
func SearchInts(a [] int , x int ) int |
返回值: SearchInts()
函数的返回类型是 int,它返回 Search 指定的索引。
三、举例
例子一:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
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
例子二:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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 方法的文章就介绍到这了,更多相关sortInts 方法内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.51cto.com/yuzhou1su/5247337