【问题描述】请使用二分查找算法在n个升序排列的整数中,查找整数x是否存在,若存在,输出“找到了,在列表中位置为x”,否则输出“未找到”
【输入形式】使用input函数输入n、x以及n个有序整数
【输出形式】使用print函数输出结果。
【样例输入】第一行输入n的值,第二行到第六行输入n个数据的值(注意升序输入),最后一行输入待查找数据。
4
2
3
4
6
4
【样例输出】
找到了,在列表中位置为2
【样例说明】
【评分标准】
a=eval(input())
b=[]
for i in range (0,a):
c=eval(input())
b.append(c)
d=eval(input())
for j in range (0,a):
if b[j]==d:
print("找到了,在列表中位置为{}".format(j))
break
else:
if j==a-1:
print("未找到")
def binary_search(arr, start, end, x):
if end >= start:
mid = start + (end - start) // 2
# 如果中间元素是目标元素,则返回其下标
if arr[mid] == x:
return mid
# 如果中间元素大于目标元素,则在左半部分查找
elif arr[mid] > x:
return binary_search(arr, start, mid - 1, x)
# 如果中间元素小于目标元素,则在右半部分查找
else:
return binary_search(arr, mid + 1, end, x)
# 如果未找到目标元素,则返回 -1
else:
return -1
n = int(input()) # 输入 n 的值
lst = [] # 用来存储 n 个有序整数
for i in range(n):
num = int(input()) # 逐个输入有序整数并存入 lst 中
lst.append(num)
x = int(input()) # 输入待查找数据
result = binary_search(lst, 0, n - 1, x) # 在 lst 中查找 x
if result != -1:
print("找到了,在列表中位置为{}".format(result ) )
else:
print("未找到")