二分查法的例子python
时间: 2023-05-31 13:02:17 浏览: 52
以下是一个使用二分查找算法的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
arr = [2, 3, 4, 10, 40]
x = 10
result = binary_search(arr, x)
if result != -1:
print("元素在索引 %d" % result)
else:
print("元素不在数组中")
相关问题
二分迭代查找算法python
二分迭代查找算法是一种高效的查找算法,可以在有序数组中快速定位目标元素的位置。以下是用Python实现的二分迭代查找算法:
```python
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 -1 # 如果目标元素不在数组中,返回-1
# 示例用法
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target)
if result != -1:
print("目标元素在数组中的索引为", result)
else:
print("目标元素不在数组中")
```
在这个例子中,我们定义了一个名为`binary_search`的函数,它接受一个有序数组`arr`和一个目标元素`target`作为输入。算法使用两个指针`low`和`high`来表示当前搜索范围的左边界和右边界。
首先,我们将`low`初始化为数组的第一个元素的索引,将`high`初始化为数组的最后一个元素的索引。然后,在一个循环中,我们计算中间元素的索引`mid`(通过将`low`和`high`相加除以2),并将中间元素与目标元素进行比较。
如果中间元素等于目标元素,我们就找到了目标元素,返回它的索引。如果中间元素小于目标元素,说明目标元素在中间元素的右边,我们将`low`更新为`mid + 1`,缩小搜索范围。如果中间元素大于目标元素,说明目标元素在中间元素的左边,我们将`high`更新为`mid - 1`,同样缩小搜索范围。
如果循环结束后仍然没有找到目标元素,说明目标元素不在数组中,我们返回-1。
在示例用法中,我们创建了一个有序数组`arr`,并将目标元素设为5。然后调用`binary_search`函数进行查找,并根据返回结果输出相应的提示信息。
python二分搜索
二分搜索是一种在有序数组中查找特定元素的算法。它的基本思想是将数组分成两半,然后确定要查找的元素在哪一半中,然后继续在该半中查找,直到找到该元素或确定该元素不存在为止。以下是一个Python实现的二分搜索的例子:
```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
```
这个函数接受一个有序数组和要查找的元素作为参数,并返回元素的索引(如果存在)或-1(如果不存在)。