线性搜索必须从索引0开始逐个比对,不可跳过任何位置;python可用enumerate一行实现或先判断存在性再index,java泛型版需用objects.equals防null异常。

要在代码中实现线性搜索(Linear Search)功能,必须从数组或列表起始位置开始逐个比对元素,直到匹配目标值或遍历结束,不能跳过任意一个索引位置。
基础实现:手写循环遍历
第一步:定义接收数组和目标值的函数参数,确保数组非空且长度大于0。
第二步:用for循环从索引0开始遍历,每次比较arr[i]与target是否相等。
第三步:一旦相等,立即return i;若循环结束仍未返回,则return -1表示未找到。
这一步必须严格按顺序执行,【跳过i=0直接从i=1开始会导致漏判首个元素】,尤其当target恰好是第一个元素时将错误返回-1。
Python中一行式实现
方法一:使用enumerate直接获取索引和值
next((i for i, v in enumerate(arr) if v == target), -1)
方法二:配合list.index()但需先判断存在性,否则抛ValueError
arr.index(target) if target in arr else -1
注意:第二种写法实际执行了两次遍历——in一次、index()再一次,小数组无感,大数组明显变慢。
Java泛型安全版
使用T[]数组 + Objects.equals()避免null指针异常
声明方法签名:public static <t> int linearSearch(T[] arr, T target)</t>
循环体内必须用Objects.equals(arr[i], target)而非arr[i] == target,【原始==在对象类型下会误判null或不同实例的相同内容】
空数组检查放在循环前,直接return -1,不进入循环体。











