我已经编写了一些代码来使用 sort.Search 在排序切片中查找元素位置,但它无法正确获取第一个元素的正确位置。package mainimport ( "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。这是一个错误吗?还是我错了?
1 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
如果您想搜索第一个元素,那么在您的比较器函数中,您应该将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 {
return data[i] >= data[0] // You could also use 1 instead of data[0]
}))
输出:0如预期。在Go Playground上试试。
- 1 回答
- 0 关注
- 230 浏览
添加回答
举报
0/150
提交
取消