用Python语言实现一个二分查找的程序
时间: 2024-05-03 14:20:01 浏览: 67
以下是Python语言实现二分查找的程序:
```python
def binary_search(arr, left, right, x):
if right >= left:
mid = left + (right - left) // 2
if arr[mid] == x:
return mid
elif arr[mid] > x:
return binary_search(arr, left, mid - 1, x)
else:
return binary_search(arr, mid + 1, right, x)
else:
return -1
arr = [2, 3, 4, 10, 40]
x = 10
result = binary_search(arr, 0, len(arr)-1, x)
if result != -1:
print("元素在索引 %d" % result)
else:
print("元素不在数组中")
```
解释:`binary_search` 函数采用递归的方式实现二分查找。它接受四个参数:数组 `arr`,要查找的元素 `x`,数组的左边界 `left`,数组的右边界 `right`。如果右边界大于等于左边界,则计算出中间位置 `mid`,并判断 `arr[mid]` 是否等于 `x`。如果是,返回 `mid`;如果 `arr[mid]` 大于 `x`,则说明要查找的元素在左半部分,递归调用 `binary_search` 函数查找左半部分;如果 `arr[mid]` 小于 `x`,则说明要查找的元素在右半部分,递归调用 `binary_search` 函数查找右半部分。如果右边界小于左边界,说明要查找的元素不在数组中,返回 `-1`。
在主程序中,定义了一个有序数组 `arr`,要查找的元素 `x`,然后调用 `binary_search` 函数查找 `x`。如果返回值不是 `-1`,说明 `x` 在数组中,输出 `元素在索引 %d`;否则,输出 `元素不在数组中`。
阅读全文