forked from go/golangs_learn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
608 B
37 lines
608 B
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
)
|
|
|
|
func main() {
|
|
|
|
list := []int{1, 2, 3, 45, 13, 16, 7}
|
|
fmt.Println(BinaryQuery(list, 13))
|
|
}
|
|
|
|
// BinaryQuery 二分查找的实现,如果查找成功返回索引;否则返回-1
|
|
func BinaryQuery(list []int, target int) int {
|
|
|
|
// 定义并初始化low和high,声明mid
|
|
low, high := 0, len(list)-1
|
|
|
|
// 前提必须进行排序
|
|
sort.Ints(list)
|
|
|
|
for low <= high {
|
|
mid := (low + high) / 2
|
|
fmt.Println(low, high, mid)
|
|
|
|
if list[mid] == target {
|
|
return mid
|
|
} else if list[mid] > target {
|
|
high = mid - 1
|
|
} else {
|
|
low = mid + 1
|
|
}
|
|
}
|
|
|
|
return -1
|
|
}
|
|
|