You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二分查找函数binsea无法输出未找到提示,请求技术帮助

问题分析与修复

你的二分查找函数存在两个核心问题,导致查找不存在的元素时无输出:

  • else分支永远不会执行:x与CardData[mid]的关系只有等于、小于、大于三种,前面的if/elif已经完全覆盖了所有可能性,else代码块永远不会被触发。
  • 循环结束后未处理未找到的情况:当循环因front >= back退出时(说明整个列表已遍历完仍未找到目标),没有对应的逻辑输出“未找到”的提示。

修复步骤

  1. 移除无用的else分支,把“未找到”的输出逻辑放在循环结束后,当found仍为False时执行。
  2. 调整区间收缩逻辑:原代码中x > CardData[mid]时仅设置front=mid,可能导致循环无法终止,需改为front=mid+1来正确缩小左闭右开区间的范围。
  3. 将mid的计算移至循环内部:每次迭代重新计算中间位置,避免初始值导致的逻辑偏差。

修正后的代码

def binsea(x, CardData):
    front = 0
    back = len(CardData)
    found = False
    while front < back and not found:
        mid = (front + back) // 2
        if x == CardData[mid]:
            found = True
            print(x, "is found at position", mid)
        elif x < CardData[mid]:
            back = mid
        else:
            front = mid + 1

    if not found:
        print(x, "not found.")

测试调用binsea(55, [11,12,25,33,52,56,57,59,85,91]),会输出55 not found.,符合预期。

内容的提问来源于stack exchange,提问作者Masrur Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:40:23