二分查找的时间复杂度O(logn)
package main
import "fmt"
func binarySearch(a []int,x int,s int,t int) int {
if s>t {
return -1
}
m:=(s+t)/2
if x==a[m] {
return m
} else if x>a[m] {
return binarySearch(a,x,s,m-1)
} else {
return binarySearch(a,x,m+1,t)
}
}
func main() {
a:=[]int{88, 85, 78, 77, 75, 70, 68, 66, 50, 48}
for i:=0; i<len(a); i++ {
fmt.Print(binarySearch(a,a[i],0,len(a)-1)," ")
}
fmt.Print(binarySearch(a,100,0,len(a)-1))
}