go语言输入n值(1<n<1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。 若x不存在,输出-1和比较次数。 输入格式: 输入格式: 第一行是数组的个数n 第二行开始是输入数组的元素 最后一行是需要查找的元素 输出格式: 输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。
时间: 2024-03-19 15:45:41 浏览: 55
好的,这是一个关于二分查找算法的问题。下面是一个示例的 Go 代码:
```
package main
import "fmt"
func main() {
// 读入 n
var n int
fmt.Scan(&n)
// 读入数组
arr := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&arr[i])
}
// 读入要查找的数 x
var x int
fmt.Scan(&x)
// 二分查找
left := 0
right := n - 1
count := 0
found := false
for left <= right {
mid := (left + right) / 2
count++
if arr[mid] == x {
fmt.Printf("%d %d\n", mid, count)
found = true
break
} else if arr[mid] < x {
left = mid + 1
} else {
right = mid - 1
}
}
if !found {
fmt.Printf("-1 %d\n", count)
}
}
```
你可以将上面的代码复制到 Go Playground 中运行,也可以在本地运行。输入样例如下:
```
8
1 3 5 7 9 11 13 15
11
```
输出结果为:
```
5 3
```
阅读全文