python递归法实现二分法查找
时间: 2023-06-29 21:04:53 浏览: 100
下面是 Python 代码实现:
```python
def binary_search(arr, low, high, x):
if high >= low:
mid = (high + low) // 2
if arr[mid] == x:
return mid
elif arr[mid] > x:
return binary_search(arr, low, mid - 1, x)
else:
return binary_search(arr, mid + 1, high, x)
else:
return -1
```
其中,`arr` 是要进行查找的有序数组,`low` 和 `high` 为数组的起始和结束索引,`x` 是要查找的数。
如果 `high >= low`,则中间元素 `mid` 取值为 `(high + low) // 2`,即 `mid` 为数组中间的索引。此时,如果 `arr[mid] == x`,则返回 `mid`。如果 `arr[mid] > x`,则说明要查找的数在数组的左半边,递归调用 `binary_search(arr, low, mid - 1, x)`。如果 `arr[mid] < x`,则说明要查找的数在数组的右半边,递归调用 `binary_search(arr, mid + 1, high, x)`。
如果 `high < low`,则说明要查找的数不在数组中,返回 `-1`。
下面是一个使用示例:
```python
arr = [2, 3, 4, 10, 40]
x = 10
result = binary_search(arr, 0, len(arr) - 1, x)
if result != -1:
print("元素在数组中的索引为", result)
else:
print("元素不在数组中")
```
输出结果为:
```
元素在数组中的索引为 3
```
阅读全文