golang:sort.Search 找不到切片中的第一个元素

我已经编写了一些代码来使用 sort.Search 在排序切片中查找元素位置,但它无法正确获取第一个元素的正确位置。


package main


import (

    "fmt"

    "sort"

)


func main() {

    data := []int{1, 2, 3}

    fmt.Println(sort.Search(len(data), func(i int) bool {

        return data[i] < 2 // or data[i] == 1

    }))

}

标准输出总是 3 而不是 0。这是一个错误吗?还是我错了?


牧羊人nacy
浏览 231回答 1
1回答

守候你守候我

如果您想搜索第一个元素,那么在您的比较器函数中,您应该将i第一个元素与第一个元素data[0](或值为1)进行比较。而且,由于你的切片按升序排序,你必须使用>=运营商的对比,因为sort.Search()返回最小的指数i中[0, n),在其中f(i)的true。data := []int{1, 2, 3}fmt.Println(sort.Search(len(data), func(i int) bool {&nbsp; &nbsp; return data[i] >= data[0] // You could also use 1 instead of data[0]}))输出:0如预期。在Go Playground上试试。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go