使用python写一个二分法迭代
时间: 2023-05-17 18:04:04 浏览: 55
实现:
```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
import math
def f(x):
return x**3 + math.sin(x) - 4
def binary_search(a, b, eps):
if f(a) == 0:
return a
elif f(b) == 0:
return b
elif f(a) * f(b) > 0:
return None
while b - a > eps:
mid = (a + b) / 2
if f(mid) == 0:
return mid
elif f(mid) * f(a) < 0:
b = mid
else:
a = mid
return (a + b) / 2
def sort_zeros(n, eps):
zeros = []
for i in range(1, n+1):
a = -i
b = i
zero = binary_search(a, b, eps)
if zero != None:
zeros.append(zero)
zeros.sort(key=lambda x: abs(f(x)))
return zeros
zeros = sort_zeros(100, 0.0001)
print(zeros)
```
在上面的代码中,我们定义了一个需要求解零点的函数 `f(x)`,然后使用二分法 `binary_search` 来求解函数的零点。这个二分法函数的输入参数是区间的两个端点 `a` 和 `b`,以及一个误差控制参数 `eps`。二分法会一直迭代直到区间的长度小于等于 `eps`,然后返回区间的中点作为函数的零点。
最后,我们调用 `sort_zeros` 函数来获取函数的前 `n` 个零点,并且按照绝对值排序后返回。在这个例子中,我们使用了 `100` 作为最大的区间端点,然后使用 `0.0001` 作为误差控制参数。
Python 迭代法 枚举法 递归法 二分法
Python中常用的几种算法包括迭代法、枚举法、递归法和二分法,下面简要介绍一下它们的概念和用法。
1. 迭代法:迭代法是一种重复执行某些操作的方法,直到达到预期结果的算法。在Python中,可以使用for循环和while循环来实现迭代算法,例如计算一个数的阶乘、求一个数的平方根等。
2. 枚举法:枚举法是一种穷举所有可能情况的方法,通常用于解决一些较小范围的问题。例如,枚举法可以用来查找一个数组中的最大值、最小值等。
3. 递归法:递归法是一种通过函数调用自身来解决问题的方法。递归算法通常需要定义递归函数的递归出口和递归调用,例如求斐波那契数列、计算二叉树的高度等。
4. 二分法:二分法是一种通过将问题划分为两个子问题来解决问题的方法。二分法通常需要使用有序数据结构,例如数组或者链表,以便进行二分查找、排序等。
这些算法在不同的问题场景中有不同的应用,需要根据实际情况选择合适的算法来解决问题。