概述
package main
import (
“bufio”
“fmt”
“os”
“strconv”
“strings”
)
func binarySearch(data []int, key int) int {
// 二分查找
left := 0
right := len(data) - 1
for {
if left > right { // 小于等于
break
}
mid := (right-left)/2 + left // 等价于 (a+b)/2,防止a+b过大
if data[mid] == key {
return mid + 1
} else if data[mid] < key {
left = mid + 1
} else {
right = mid - 1
}
}
return -1
}
func main() {
input := bufio.NewScanner(os.Stdin)
for input.Scan() {
str := strings.Split(input.Text(), " ")
input.Scan()
key, _ := strconv.Atoi(input.Text())
data := make([]int, 0)
for i := 0; i < len(str); i++ {
temp, _ := strconv.Atoi(str[i])
data = append(data, temp)
}
fmt.Println(binarySearch(data, key))
}
}
最后
以上就是大意红牛为你收集整理的Golang实现基本查找算法的全部内容,希望文章能够帮你解决Golang实现基本查找算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复