当在排序数组中查找元素时,使用二进制搜索算法(也称为二分查找算法)是一种高效的方法。以下是一个简单的 Python 实现:
pythonCopy codedef binary_search(arr, target):
"""
在排序数组arr中查找target,返回其下标。如果找不到,则返回-1。
"""
left, right = 0, 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
在这个算法中,我们使用两个指针 left
和 right
来跟踪我们搜索的范围。一开始,left
指向数组的第一个元素,right
指向数组的最后一个元素。然后,我们将 mid
指针设置为左右指针的中点,并将目标元素与中点元素进行比较。如果它们相等,我们已经找到了目标元素,并返回中点的索引。如果目标元素大于中点元素,那么我们只需要在右侧的子数组中继续搜索,因此将左指针移动到中点后面的一个位置。否则,如果目标元素小于中点元素,那么我们只需要在左侧的子数组中继续搜索,因此将右指针移动到中点前面的一个位置。我们在每次循环中重复以上步骤,直到找到目标元素或搜索范围缩小为空,返回-1。
原文链接:codingdict.net