有序数组线性搜索函数无返回结果问题求助
问题分析与修复
你的代码存在几个关键错误,导致无法正常输出结果:
核心错误点
- 循环变量混淆:
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
修复说明
- 每次循环取出当前索引对应的数组元素,和目标数字做比较。
- 找到匹配元素时,返回当前索引
el,满足需求。 - 遇到大于目标的元素时,利用数组有序的特性直接终止循环,提升效率。
- 将
return None移到循环外部,确保只有遍历完所有符合条件的元素后,才返回未找到的结果。
内容的提问来源于stack exchange,提问作者chuck_O
相关产品推荐
相关产品推荐

