python代码 二分查找
时间: 2024-07-17 15:01:11 浏览: 44
二分查找(Binary Search)是一种高效的搜索算法,它假设待查的元素在一个已排序的数组中。在Python中,可以通过递归或非递归的方式实现。这里展示的是非递归方式的二分查找代码[^2]:
```python
def binary_search(arr, num):
left = 0
right = len(arr) - 1
# 当左指针小于等于右指针时继续循环
while left <= right:
mid = (left + right) // 2 # 计算中间位置
# 检查中间元素是否为目标数
if arr[mid] == num:
return mid
# 如果中间元素大于目标数,缩小搜索范围到左半部分
elif arr[mid] > num:
right = mid - 1
# 否则,搜索范围在右半部分
else:
left = mid + 1
# 查找失败,返回-1
return -1
```
这个函数接受一个已排序的数组`arr`和一个目标数字`num`作为参数。如果找到目标数字,它会返回该数字在数组中的索引;否则,返回-1表示未找到。
相关问题
python编写二分查找代码
需要在有序数组中查找特定元素时,二分查找算法是一种高效的搜索算法。以下是使用Python实现二分查找算法的核心代码:
```python
def binary_search(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
```
其中,`arr`是待查找的有序数组,`target`是要查找的目标元素。函数返回目标元素在数组中的索引,如果目标元素不在数组中,则返回-1。
python的二分查找代码
可以用以下的Python代码实现二分查找:
```
def binary_search(arr, x):
low, high = 0, 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` 和一个要查找的目标值 `x` 作为参数。如果目标值存在于数组中,则返回它的下标;否则返回 -1。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)