用python写一个折半查找法
时间: 2023-11-20 14:38:23 浏览: 128
可以的,以下是用Python实现折半查找法的代码:
def binary_search(arr, x):
low = 0
high = len(arr) - 1
mid = 0
while low <= high:
mid = (high + low) // 2
if arr[mid] < x:
low = mid + 1
elif arr[mid] > x:
high = mid - 1
else:
return mid
return -1
注意,以上代码仅供参考,具体实现需要根据具体需求进行调整。
相关问题
用python生成一个可视化折半查找法
在Python中,我们可以使用matplotlib库来创建一个可视化折半查找法(Binary Search Algorithm)的流程图。首先,你需要安装`matplotlib`库,如果还没有安装,可以使用`pip install matplotlib`命令。
下面是一个简单的例子,展示如何用Python代码和matplotlib创建一个二分查找算法的动画:
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
# 定义二分查找函数
def binary_search(array, target):
low = 0
high = len(array) - 1
while low <= high:
mid = (low + high) // 2
if array[mid] == target:
return mid
elif array[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
# 创建一个示例数组
array = np.arange(0, 50)
# 初始化图像
fig, ax = plt.subplots()
ax.set_xlim([0, len(array)])
line, = ax.plot([], [], 'o', ms=10)
text = ax.text(0.02, 0.95, '', transform=ax.transAxes)
# 动画函数
def animate(i):
index = binary_search(array, i)
line.set_data(np.array([0, index]), np.array([i, i]))
text.set_text(f"Index: {index}, Target: {i}")
return line, text
# 创建动画并显示
ani = FuncAnimation(fig, animate, frames=np.arange(len(array)), interval=50)
plt.show()
编写程序,实现对单调递增的整形序列中(如随机产生10个1~100之间的不重复整数序列),进行折半查找。用折半查找法找出一个数是数组中第几个元素,如果找到,则返回其下标,如果该数不在数组中,则返回-1 用Python写代码
在Python中实现对一个单调递增的整数序列进行折半查找(也称为二分查找)的示例代码如下:
```python
def binary_search(arr, target):
left, right = 0, 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 # 未找到目标值,返回-1
# 示例:生成一个单调递增的整数序列
import random
arr = sorted(random.sample(range(1, 101), 10)) # 随机产生10个1~100之间的不重复整数序列
print("生成的数组为:", arr)
# 选择一个数进行查找
target = 50 # 假设我们要查找的数是50
index = binary_search(arr, target)
if index != -1:
print(f"数{target}是数组中的第{index + 1}个元素。")
else:
print(f"数{target}不在数组中。")
```
这段代码首先定义了一个二分查找的函数`binary_search`,该函数接受一个已排序的数组`arr`和要查找的目标值`target`作为参数。如果在数组中找到了目标值,则返回它的下标;如果没有找到,则返回-1。
然后,我们使用`random.sample`函数生成了一个包含10个不同整数的随机列表,并用`sorted`函数将其排序。之后,我们通过调用`binary_search`函数来查找目标值在数组中的位置。