线性查找

  • 什么是线性查找
  • 操作步骤
  • 时间复杂度
  • 适用场景

什么是线性查找

线性查找(也叫顺序查找)是最简单直接的查找算法:从数组的第一个元素开始,逐个检查,直到找到目标或遍历完整个数组。

就像在一排人中找「张三」——你从第一个人开始问「你是张三吗?」,一个一个问下去,直到找到为止。

操作步骤

3 9 8 2 1 4 6 5 7 中查找数字 6:

  3  9  8  2  1  4  6  5  7
  ↑
  3 ≠ 6,继续

  3  9  8  2  1  4  6  5  7
     ↑
     9 ≠ 6,继续

  3  9  8  2  1  4  6  5  7
        ↑
        8 ≠ 6,继续

  ...(继续检查 2、1、4)

  3  9  8  2  1  4 [6] 5  7
                    ↑
                   6 = 6,找到了!

Python 实现

def linear_search(arr, target):
    for i in range(len(arr)):
        if arr[i] == target:
            return i    # 找到了,返回索引
    return None         # 没找到

arr = [3, 9, 8, 2, 1, 4, 6, 5, 7]
print(linear_search(arr, 6))   # => 6
print(linear_search(arr, 10))  # => None

时间复杂度

情况 比较次数 时间复杂度
最好(目标在第一个) 1 O(1)
最坏(目标在最后或不存在) n O(n)
平均 n/2 O(n)

线性查找的时间复杂度为 O(n)——数据量越大,查找越慢。

适用场景

线性查找的优点是不要求数据有序,实现简单。适合:

  • 数据量小的场景
  • 数据无序且不需要排序的场景
  • 添加数据频繁、查找不频繁的场景(直接加在末尾即可,O(1))

如果数据量大且需要频繁查找,应该先排序再用二分查找(O(log n)),或者使用哈希表(O(1))。

小结

  • 线性查找从头到尾逐个检查,最简单直接的查找方式
  • 不要求数据有序,但时间复杂度为 O(n)
  • 适合小数据量或无序数据的场景