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

有序数组线性搜索函数无返回结果问题求助

问题分析与修复

你的代码存在几个关键错误,导致无法正常输出结果:

核心错误点

  • 循环变量混淆:el是数组的索引,不是数组元素,你错误地拿索引和目标数字比较,而非数组对应位置的元素。
  • 过早返回None:else分支里直接return None,第一次循环不匹配就直接退出函数,根本不会遍历后续元素。
  • 返回值不符合需求:找到目标时你返回的是数组元素,而要求是返回索引。

修复后的代码

def linear_search(array, number):
    for el in range(len(array)):
        current_element = array[el]
        if current_element == number:
            return el  # 返回目标元素的索引
        elif current_element > number:
            break  # 有序数组,后续元素更大,无需继续遍历
    return None  # 遍历结束未找到目标,返回None

print(linear_search([10,11,12,22],22))  # 输出:3

修复说明

  1. 每次循环取出当前索引对应的数组元素,和目标数字做比较。
  2. 找到匹配元素时,返回当前索引el,满足需求。
  3. 遇到大于目标的元素时,利用数组有序的特性直接终止循环,提升效率。
  4. 将return None移到循环外部,确保只有遍历完所有符合条件的元素后,才返回未找到的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:55:24