使用python写一个二分法迭代
时间: 2023-05-17 19:04:04 浏览: 102
实现:
```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代码
二分法(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 写的一个简单的二分法查找程序:
```python
def binary_search(arr, x):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] < x:
low = mid + 1
elif arr[mid] > x:
high = mid - 1
else:
return mid
return -1
arr = [2, 4, 7, 9, 12, 15, 19, 21]
x = 15
result = binary_search(arr, x)
if result != -1:
print(f"元素在索引 {result} 处")
else:
print("元素不在数组中")
```
在这个程序中,我们定义了一个名为 `binary_search` 的函数,它接受两个参数:`arr` 表示要查找的数组,`x` 表示要查找的元素。函数使用一个 while 循环来执行二分查找,每次迭代都将数组分成两部分,然后根据中间元素与要查找的元素的大小关系缩小查找范围。如果找到了要查找的元素,函数会返回它的索引;否则,函数会返回 -1。在主程序中,我们定义了一个数组和要查找的元素,然后调用 `binary_search` 函数来查找它们。如果找到了元素,程序会输出它的索引;否则,程序会输出“元素不在数组中”。
阅读全文