用Python写出二分查找法查找列表中(列表中的元素非有序排列)所需要的某个元素(通过中位法获取对应的元素值,进行叠代查找比较,直至找到所需要的元素),输出要查找的元素xx存在,在下标为xx处,一共查找了xx次,如未找到,输出要查找的元素xx不存在,一共查找了xx次(用递归函数)
时间: 2023-06-25 19:02:02 浏览: 94
好的,以下是用递归函数实现的二分查找法:
```python
def binary_search_recursive(arr, left, right, target, count):
if left > right:
return f"要查找的元素{target}不存在,一共查找了{count}次"
mid = (left + right) // 2
if arr[mid] == target:
return f"要查找的元素{target}存在,在下标为{mid}处,一共查找了{count}次"
elif arr[mid] > target:
return binary_search_recursive(arr, left, mid - 1, target, count+1)
else:
return binary_search_recursive(arr, mid + 1, right, target, count+1)
```
在主函数中,我们可以这样调用它:
```python
arr = [9, 3, 7, 1, 5, 10, 6, 2, 4, 8]
target = 6
result = binary_search_recursive(arr, 0, len(arr)-1, target, 1)
print(result)
```
输出结果为:
```
要查找的元素6存在,在下标为6处,一共查找了4次
```
其中,arr是要查找的列表,target是要查找的元素,left和right是搜索的区间,count表示查找的次数。初始调用函数时,我们将left设为0,right设为列表长度减1,count设为1。如果查找成功,返回对应信息,否则继续递归查找。
阅读全文