二分法迭代python代码
时间: 2024-06-23 13:01:40 浏览: 173
二分法(Binary Search)是一种在有序数组中查找特定元素的搜索算法,其基本思想是每次将搜索区间缩小一半。下面是使用 Python 实现的二分查找迭代版本的代码:
```python
def binary_search_iterative(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
# 如果没有找到目标,返回 -1 表示未找到
return -1
# 使用方法
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search_iterative(arr, target)
if result != -1:
print(f"元素 {target} 在数组中的索引为 {result}")
else:
print(f"元素 {target} 未在数组中")
相关问题
使用python写一个二分法迭代
实现:
```python
def binary_search_iterative(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
```
调用:
```python
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
target = 5
result = binary_search_iterative(arr, target)
if result != -1:
print("元素在数组中的索引为", str(result))
else:
print("元素不在数组中")
```
输出:
```
元素在数组中的索引为 4
```
希望能够帮到您!
方程求根二分法编程python
方程求根的二分法是一种数值解法,用于寻找函数零点附近的精确值。它的基本思想是将区间逐步缩小,每次迭代都将区间中间的点与函数值进行比较,如果函数值在两个端点之间有相反的符号,说明零点应在中间位置。以下是使用Python实现二分法求解一元二次方程零点的一个简单例子:
```python
def bisection_method(f, a, b, tolerance=1e-6):
"""
使用二分法求解函数f在[a, b]之间的零点
:param f: 目标函数
:param a, b: 区间端点
:param tolerance: 函数值接近0的容忍度
:return: 零点的近似值
"""
if f(a) * f(b) >= 0: # 判断初始区间的函数值是否异号
print("初始区间错误,函数在[a, b]上无零点")
return None
while (b - a) > tolerance: # 当区间长度大于容差时继续迭代
c = (a + b) / 2 # 计算新的中间点
if f(c) == 0: # 如果找到零点,则返回
break
elif f(a) * f(c) < 0: # 否则,根据函数值更新区间
b = c
else:
a = c
return c
# 示例:求解方程 x^2 - 4 = 0 的根
root = bisection_method(lambda x: x**2 - 4, -5, 5)
print(f"方程的根大约是 {root}")
阅读全文