欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二分搜索(递归与分治)

程序员文章站 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()

相关标签: 二分搜索