以下是一个用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 = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target)
if result != -1:
print("元素在索引 %d 处找到" % result)
else:
print("元素不在数组中")
这段代码中,binary_search
函数接受一个有序数组和目标元素作为参数。该函数使用left
和right
两个指针来指示查找范围的左右边界。在每次循环中,计算中间索引mid
,并根据arr[mid]
与目标元素的大小关系来更新left
和right
的值。如果arr[mid]
等于目标元素,则返回mid
作为结果。如果在整个循环过程中没有找到目标元素,则返回-1表示目标元素不在数组中。
在上面的示例中,目标元素5在数组arr
中的索引位置为2,因此输出结果为“元素在索引2处找到”。