二分搜索(递归与分治)
程序员文章站
2022-05-13 20:09:52
...
二分搜索(递归与分治)
【问题描述】在有序数组中寻找特定的元素
【输入形式】在屏幕上输入若干个从小到大排列的整数,各数间都以一个空格分隔。再输入要寻找的元素。
【输出形式】若有序数组中存在该特定元素,则输出该元素在数组中的位置;若不存在,则输出0。
【样例1输入】
1 2 3 4 5 6 7 8 9 10
3
【样例1输出】
3
【样例1说明】
输入:10个有序整数,从1到10,以空格分隔。特定元素为3。
输出:3,表示特定元素3在有序数组第3个位置。
【样例2输入】
1 2 3 4 5 6 7 8 9 10
11
【样例1输出】
0
【样例2说明】
输入:10个有序整数,从1到10,以空格分隔。特定元素为11。
输出:0,表示特定元素11在有序数组中不存在。
【评分标准】根据输入得到准确的输出.
要输出中间结果:
def Binary_Search(L, x, n):
left = 0
right = n-1
while left <= right:
middle = (left + right)//2
if x == L[middle]:
return middle
if x > L[middle]:
left = middle + 1
else:
right = middle - 1
return -1
def main():
L = list(map(int, input().split()))
n = len(L)
x = eval(input())
a = Binary_Search(L, x, n)
print(a+1)
if __name__ == '__main__':
main()