二分查找算法

【问题描述】请使用二分查找算法在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("未找到")

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值