线性查找是从头到尾逐个比对元素直到找到目标或遍历完毕,不依赖数组有序性,时间复杂度o(n),空间复杂度o(1),适用于小规模或无序数据,基本类型用==、引用类型建议用equals()并注意null安全。

Java 中数组实现线性查找,就是从头到尾逐个比对元素,直到找到目标值或遍历完所有元素。它不依赖数组是否有序,适合小规模或无序数据,时间复杂度为 O(n)。
基本实现逻辑
线性查找的核心是用一个循环遍历数组每个索引位置,检查当前元素是否等于目标值。一旦匹配就返回当前下标;若全程未匹配,通常返回 -1 表示未找到。
- 适用于任意类型的一维数组(int、String、自定义对象等)
- 比较操作需与元素类型匹配:基本类型用 ==,引用类型建议用 equals()(注意 null 安全)
- 无需额外空间,原地操作,空间复杂度 O(1)
基础代码示例(int 数组)
以下是一个简洁、可直接运行的 int 类型线性查找方法:
public static int linearSearch(int[] arr, int target) {
if (arr == null) return -1;
for (int i = 0; i
调用示例:int index = linearSearch(new int[]{3, 7, 1, 9, 5}, 9); → 返回 3
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
支持泛型的通用版本
为适配任意引用类型,可用泛型封装,避免重复写法:
public static <t> int linearSearch(T[] arr, T target) {
if (arr == null) return -1;
for (int i = 0; i
</t>
注意:使用 Objects.equals() 可安全处理 null,比直接调用 target.equals(arr[i]) 更健壮。
查找多个匹配位置
如果需要所有匹配索引(而非仅第一个),可改用 List 收集结果:
public static List<integer> linearSearchAll(int[] arr, int target) {
List<integer> indices = new ArrayList();
if (arr == null) return indices;
for (int i = 0; i
</integer></integer>
例如查找 {2, 5, 2, 8, 2} 中所有 2 的位置,返回 [0, 2, 4]。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










