二分查找算法(Binary Search),这是一种非常常见的算法,用于在一个有序数组中查找某个特定的值。下面是二分查找算法的基本原理:

  1. 首先,将数组按升序排列,确保数组有序。
  2. 然后,确定数组的中间元素。
  3. 将要查找的值与中间元素进行比较。
  4. 如果要查找的值等于中间元素,则返回该元素的索引。
  5. 如果要查找的值小于中间元素,则在左半边的子数组中重复步骤 2-4。
  6. 如果要查找的值大于中间元素,则在右半边的子数组中重复步骤 2-4。
  7. 如果要查找的值不存在于数组中,则返回一个特定的“未找到”值。

二分查找算法的时间复杂度为 O(log n),因为每次查找都可以将数组的大小缩小一半,而不是线性搜索的 O(n)。

下面是一个使用 Go 实现的简单的二分查找算法代码示例:

func binarySearch(arr []int, target int) int {
    left := 0
    right := len(arr) - 1

    for left <= right {
        mid := (left + right) / 2

        if arr[mid] == target {
            return mid
        } else if arr[mid] < target {
            left = mid + 1
        } else {
            right = mid - 1
        }
    }

    return -1 // 未找到
}
binarySearcharrtarget
leftrightmid