- 查找
- 排序
基础知识
顺序查找,对应的英文为 Sequential Search,又被称之为 线性查找,是一种最简单的查找算法。它的核心思想是从数组的第一个元素开始,逐个检查每个元素,直到找到目标元素或者遍历完整个数组。顺序查找的工作方式非常直观:
- 从数组的第一个元素开始,依次检查每个元素。
- 如果当前元素与目标值相等,查找成功,返回元素的索引。
- 如果当前元素与目标值不相等,则继续检查下一个元素。
- 如果遍历完整个数组都没有找到目标值,则查找失败,返回一个表示失败的标识(例如
-1)。
function search(arr, target) { for (let i = 0; i < arr.length; i++) { if (arr[i] === target) { return i } } // 说明整个数组遍历完了,但是没有一次进入 if // 说明不存在 return -1}
const arr = [10, 20, 30, 40, 50]const target = 30const result = search(arr, target)console.log(result) // 2时间复杂度
顺序查找的时间复杂度为 O(n),其中 n 是数组的元素个数。最坏情况下,算法需要检查每一个元素,直到找到目标值或遍历完整个数组。
空间复杂度
顺序查找的空间复杂度为 O(1),因为算法只需要常量级的空间来存储一些辅助变量(如索引)。不会随着 n 的增长辅助空间有任何的变化。
顺序查找的优缺点
-
优点:简单直观、易于实现。这种方法是不需要对数组进行排序。
-
缺点:效率比较低,特别是数据量比较大的时候。