/**
* @Author: binwei
* @Description:
* @Date: 2020/12/3 10:59
*/
package main
import (
"fmt"
)
func main() {
arr := []int{0, 1, 2, 3, 4, 5, 10}
fmt.Println(binarySearch(arr, 10))
fmt.Println(binarySearchV2([]int{0, 1, 2, 3, 4, 5, 10}, 0, len(arr), 10))
}
// 非递归方式实现
func binarySearch(arr []int, target int) int {
low := 0
top := len(arr)
for {
if low <= top {
mid := (low + top) / 2
if arr[mid] == target {
return mid
} else if arr[mid] < target {
low = mid + 1
} else {
top = mid - 1
}
} else {
return -1
}
}
}
// 以递归方式实现
func binarySearchV2(arr []int, low, top, target int) int {
if low <= top {
mid := (low + top) / 2
if arr[mid] == target {
return mid
} else if arr[mid] < target {
return binarySearchV2(arr, mid+1, top, target)
} else {
return binarySearchV2(arr, 0, mid-1, target)
}
} else {
return -1
}
}
golang 实现二分查找
最新推荐文章于 2023-12-18 21:53:26 发布