Go 语言入门很简单:sort 中的sortInts 方法

Posted 宇宙之一粟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 语言入门很简单:sort 中的sortInts 方法相关的知识,希望对你有一定的参考价值。

从有序数据中查找值

我们知道,常见查找算法有顺序查找和二分查找。而二分查找就是基于有序数据的查找方法。而 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 := []int2025, 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 := []int10, 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 方法的主要内容,如果未能解决你的问题,请参考以下文章

Go 语言入门很简单:Go 实现凯撒密码

Go 语言入门很简单:正则表达式

Go 语言入门很简单:什么是上下文

Go 语言入门很简单 -- 8. Go Maps #私藏项目实操分享#

Go语言自学系列 | golang标准库中的sort包

Go 语言入门很简单:什么是 Golang