go 语言实现二分查找(递归)

526 阅读1分钟

go 语言实现二分查找(递归)

二分查找的特点:

  1. 数据必须是有序的。
  2. 时间复杂度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)
}

参考链接:
使用Go实现二分查找(Binary Search) - 简书 (jianshu.com)