Go实现二分法查找
package main
/*
Go实现二分法查找
二分法查找基实就是折半查找, 提前条件是数组为有序数组
思路:
1. 确定中间位置k
2. 将要查找的值T与array[k]比较,若相等,则查找成功。
若array[k] < T, 则应该向大的方向找,k=k+1;
若array[k] > T, 则应该向小的方向找,k=k-1;
*/
import (
"fmt"
)
func BinSearch(array []int, s int) int {
low := 0
high := len(array) - 1
for {
if (low > high) {
break
}
mid := (low + high) / 2
if (array[mid] < s) {
low = mid + 1
} else if (array[mid] > s) {
high = mid - 1
} else {
return mid
}
}
return -1
}
func main() {
ary := []int{1,2,3,4,5,6,7,8,9,10}
s := 9
n := BinSearch(ary, s)
fmt.Printf("要查找的数字为[%d],在数组中的位置为[%d]", s, n)
}
输出:
要查找的数字为[9],在数组中的位置为[8]