二分查找算法(Binary Search),这是一种非常常见的算法,用于在一个有序数组中查找某个特定的值。下面是二分查找算法的基本原理:
- 首先,将数组按升序排列,确保数组有序。
- 然后,确定数组的中间元素。
- 将要查找的值与中间元素进行比较。
- 如果要查找的值等于中间元素,则返回该元素的索引。
- 如果要查找的值小于中间元素,则在左半边的子数组中重复步骤 2-4。
- 如果要查找的值大于中间元素,则在右半边的子数组中重复步骤 2-4。
- 如果要查找的值不存在于数组中,则返回一个特定的“未找到”值。
二分查找算法的时间复杂度为 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