go 语言实现二分查找(递归)
二分查找的特点:
- 数据必须是有序的。
- 时间复杂度O(logn)
二分查找的递归实现:
// 递归
func BinarySearchRecursive(slice []int, value int, low int, high int) int {
if low > high {
return -1
}
// 中间位置等于 低位位置 + (高位位置-低位位置)/2
mid := low + (high-low)/2
// 找到目标值,返回位置
if slice[mid] == value {
return mid
}
// 当前值小于目标值,则低位位置 改为 中间位置 + 1
if slice[mid] < value {
low = mid + 1
}
// 当前值大于目标值,则高位位置 改为 中间位置 - 1
if slice[mid] > value {
high = mid - 1
}
// 递归
return BinarySearchRecursive(slice, value, low, high)
}