二分查找(Binary Search)是一种高效的查找算法,它适用于已经排好序的数组。该算法通过将待查找范围不断缩小一半的方式来快速定位目标元素。本文将介绍二分查找算法的原理,并提供相应的源代码实现。
算法原理
二分查找算法的基本思想是:将目标值与数组的中间元素进行比较,如果相等,则直接返回;如果目标值小于中间元素,则在数组的左半部分继续查找;如果目标值大于中间元素,则在数组的右半部分继续查找。通过不断缩小查找范围,最终可以找到目标值或确定目标值不存在。
具体的算法流程如下:
- 设定左边界
left
为 0,右边界right
为数组的长度减1。 - 当左边界小于等于右边界时,执行以下步骤:
- 计算中间位置
mid
,可以使用(left + right) // 2
进行计算。 - 如果中间元素等于目标值,则返回中间位置
mid
。 - 如果中间元素大于目标值,则将右边界
right
更新为mid - 1
。 - 如果中间元素小于目标值,则将左边界
left
更新为mid + 1
。
- 计算中间位置
- 如果循环结束时仍未找到目标值,则返回不存在的标识,例如 -1。
源代码实现
下面是使用 Python 编程语言