GO 实现二分查找

package main

import "fmt"

func main() {
array := []int{1, 5, 9, 15, 81, 89, 123, 189, 333}
target := 500
result := BinarySearch(array, target, 0, len(array)-1)
fmt.Println(target, result)
target = 189
result = BinarySearch(array, target, 0, len(array)-1)
fmt.Println(target, result)
}

func BinarySearch(array []int, target int, l, r int) int {
if l > r {
//出界了, 找不到
return -1
}
//从中间开始找
mid := (l + r) / 2
middleNum := array[mid]
if middleNum == target {
return mid //找到了
} else if middleNum > target {
//中间的数比目标大,从左边开始找
return BinarySearch(array, target, l, mid-1)
} else {
//中间的数比目标还小,从右边开始找
return BinarySearch(array, target, mid+1, r)
}

}
posted @ 2023-08-02 16:06  lisus2000  阅读(7)  评论(0编辑  收藏  举报