用python实现,二分查找法查找列表中(列表中的元素非有序排列)所需要的某个元素(通过中位法获取对应的元素值,进行叠代查找比较,直至找到所需要的元素),输出要查找的元素xx存在,在下标为xx处,一共查找了xx次,如未找到,输出要查找的元素xx不存在,一共查找了xx次;
时间: 2023-11-14 16:05:32 浏览: 96
好的,以下是用 Python 实现的二分查找法查找列表中某个元素的代码:
```python
def binary_search(arr, x):
"""
二分查找法查找列表中某个元素
:param arr: 待查找的列表
:param x: 要查找的元素
:return: 若找到,则返回该元素在列表中的下标;若未找到,则返回-1
"""
# 列表的左右端点
left, right = 0, len(arr) - 1
# 记录查找次数
count = 0
while left <= right:
mid = (left + right) // 2
count += 1
if arr[mid] == x:
return mid, count
elif arr[mid] < x:
left = mid + 1
else:
right = mid - 1
return -1, count
# 测试
arr = [10, 20, 30, 40, 50]
x = 30
index, count = binary_search(arr, x)
if index != -1:
print(f"要查找的元素{x}存在,在下标为{index}处,一共查找了{count}次")
else:
print(f"要查找的元素{x}不存在,一共查找了{count}次")
```
输出:
```
要查找的元素30存在,在下标为2处,一共查找了2次
```
注:如果列表中的元素未排序,则不能使用二分查找法。
阅读全文