gpt4 book ai didi

golang : sort. 搜索找不到 slice 中的第一个元素

转载 作者:IT王子 更新时间:2023-10-29 01:36:41 27 4
gpt4 key购买 nike

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

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。这是一个错误吗?还是我错了?

谢谢。

最佳答案

如果你想搜索第一个元素,那么在你的比较器函数中,你应该将 ith 元素与第一个 data[0 ](或 1 的值)。

并且由于您的 slice 是按升序排序的,因此您必须使用 >= 运算符进行比较,因为 sort.Search() 返回最小的索引 [0, n) 中的 i,其中 f(i)true

data := []int{1, 2, 3}
fmt.Println(sort.Search(len(data), func(i int) bool {
return data[i] >= data[0] // You could also use 1 instead of data[0]
}))

输出:0 符合预期。试试 Go Playground .

关于golang : sort. 搜索找不到 slice 中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28344757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com