知识内容详见《大话数据结构》P298
代码实现:
package main
import "fmt"
func Binary_Search(ptr *[]int, key int) (index int) {
low := 0 //指向第0个元素
high := len((*ptr)) - 1 //指向最后一个元素
for low <= high {
mid := low + (high-low)/2 //折半
if (*ptr)[mid] < key {
low = mid + 1
} else if (*ptr)[mid] > key {
high = mid - 1
} else {
return mid //找到,返回对应的索引值
}
}
return -1 //没有找到,返回-1
}
func main() {
arr := []int{1, 2, 4, 5, 6, 7, 8, 12, 56, 78, 90, 98}
index := Binary_Search(&arr, 90)
fmt.Println(index)
}