给定已按升序排列的n个元素A[0:n-1],现要在这n个元素中找出某一特定元素key,采用二分搜索算法实现
时间: 2023-05-12 17:03:51 浏览: 51
二分搜索算法实现
好的,这是一个经典的二分搜索问题。我们可以通过以下步骤实现:
1. 初始化左右边界,left = 0, right = n-1。
2. 当 left <= right 时,执行以下步骤:
a. 计算中间位置 mid = (left + right) // 2。
b. 如果 A[mid] == key,则返回 mid。
c. 如果 A[mid] > key,则在左半部分继续搜索,更新 right = mid - 1。
d. 如果 A[mid] < key,则在右半部分继续搜索,更新 left = mid + 1。
3. 如果没有找到 key,则返回 -1。
下面是 Python 代码实现:
def binary_search(A, key):
left, right = 0, len(A)-1
while left <= right:
mid = (left + right) // 2
if A[mid] == key:
return mid
elif A[mid] > key:
right = mid - 1
else:
left = mid + 1
return -1
如果 A 中存在 key,则该函数返回 key 在 A 中的下标,否则返回 -1。
阅读全文