当在排序数组中查找元素时,使用二进制搜索算法(也称为二分查找算法)是一种高效的方法。以下是一个简单的 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。
left
right
mid
原文链接:codingdict.net