写一段二分法求解问题的代码并绘制图像
时间: 2024-10-03 14:04:04 浏览: 32
二分法是一种在有序数组中查找特定元素的搜索算法,通过每次比较中间元素,将搜索范围缩小一半。以下是使用Python实现的一个简单的二分查找函数,并使用matplotlib绘制搜索过程的示意图:
```python
import numpy as np
import matplotlib.pyplot as plt
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return None # 如果未找到目标,返回None
# 创建一个测试数组
arr = np.arange(0, 50)
target = 30
# 执行二分查找
index = binary_search(arr, target)
if index is not None:
print(f"找到了 {target},索引为 {index}")
# 绘制搜索过程图
x = np.arange(len(arr))
y = [1 if i == index else 0 for i in x]
plt.plot(x, y, 'o-r', markersize=10)
plt.vlines(index, 0, 1, color='r', linestyle='--')
plt.xticks(np.arange(len(arr)))
plt.yticks([0, 1], ['未查找', '已查找'])
plt.xlabel('数组索引')
plt.ylabel('状态')
plt.title('二分查找过程')
plt.show()
```
这段代码首先实现了二分查找函数,然后创建了一个示例数组并执行搜索,最后用图表展示了搜索的过程。
阅读全文