使用python完成折半查找
时间: 2023-10-14 16:04:50 浏览: 80
以下是使用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折半查找,也称为二分查找,是一种在有序数组中查找特定元素的算法。它要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列(升序或者降序)。时间复杂度为O(log2n),每次循环都会舍弃一半的查找空间,空间复杂度为O(1),使用一个整型变量mid记录中间的值。具体编码可以参考以下代码:
```
def binSearch(nums,target):
low = 0
high = len(nums)-1
while low <= high:
mid = (low + high) // 2
if nums[mid] == target:
return mid
elif nums[mid] > target:
high = mid - 1
elif nums[mid] < target:
low = mid + 1
a = binSearch([1,3,5,7,8,9],3)
print(a)
```
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:
print(f"找到数据项 {arr[mid]},索引为 {mid}")
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
print("未找到目标数据项")
return -1
# 使用示例
sorted_list = [1, 3, 5, 7, 9, 11]
target_to_find = 7
binary_search(sorted_list, target_to_find)
```
在这个例子中,`binary_search`函数接收一个排序后的列表`arr`和目标值`target`作为参数。如果找到目标值,会打印出该值及其对应的索引;如果没有找到,则返回-1。
阅读全文