📅  最后修改于: 2023-12-03 15:21:39.668000             🧑  作者: Mango
二元搜寻,也称为二分搜寻,是常用于查找排序数组中元素的算法。它的时间复杂度为 O(logn),比线性查找方法更高效。
二元搜寻算法的基本思想是:将数组从中间开始分成两半,如果中间元素大于要查找的元素,则在左半部分查找;如果中间元素小于要查找的元素,则在右半部分查找;如果相等,则直接返回中间下标。不断重复上述过程,直到找到或者未找到目标元素。
二元搜寻可以用递归或非递归的方式实现。以下是用非递归的方式实现二元搜寻的 Python 代码示例:
def binary_search(arr, target):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
在以上代码中,arr
表示排序好的数组,target
表示目标元素,left
和 right
分别表示数组的左右边界。在代码中,我们不断将搜索区间缩小至左半部分、右半部分或者找到目标元素为止。
二元搜寻是一种高效的查找算法,它的时间复杂度为 O(logn)。我们可以用递归或非递归的方式实现。在实现过程中,需要确认数组的左右边界,以及如何缩小搜索区间。