二分法查找原理,自不必多说,网上随意可找到解释,还是比较简单的,重点在于我要练习go语言的使用,所以实现了go语言版本。
package main
import "fmt"
//循环二分法查找
func binarySearch(s []int, target int) int {
low, high := 0, len(s)
for {
if low >= high {
break
}
mid := (low + high) /2
if s[mid] == target {
return mid
} else if s[mid] > target {
high = mid
} else {
low = mid
}
}
return -1
}
//递归二分法查找
func binarySearchRecursive(s []int, target int, low int ,high int) int {
mid := (low + high) /2
if s[mid] == target {
return mid
} else if s[mid] > target {
return binarySearchRecursive(s, target, low, mid)
} else {
return binarySearchRecursive(s, target, mid, high)
}
return -1
}
func main() {
s := []int{0,1,2,3,4,5,6,7,8,9}
fmt.Println("binarySearch target index: ", binarySearch(s,9))
fmt.Println("binarySearchRecursive target index: ", binarySearchRecursive(s,9, 0, len(s)))
}