数据结构与算法(Dart)之线性查找(十六)

线性查找被定义为一种顺序查找算法,从一端开始,遍历列表中的每个元素,直到找到所需的元素,否则将继续查找,直到数据集的末尾。

在线性搜索算法中,

  • 每个元素都被视为该键的潜在匹配项并进行相同检查。
  • 如果找到任何元素等于该键,则搜索成功并返回该元素的索引。
  • 如果没有找到与键相等的元素,则搜索结果为"未找到匹配项"。
ini 复制代码
/// 顺序查找
int search(arr, n, x) {
  for (int i = 0; i < n; i++) {
    if (arr[i] == x) return i;
  }
  return -1;
}

void main() {
  List<int> arr = [2, 3, 8, 10, 90];
  int x = 10;
  int n = arr.length;

  int result = search(arr, n, x);

  (result == -1)
      ? print("Element is not present in array")
      : print("Element is present at index: " + '$result');
}

时间复杂度:

  • 最佳情况: 在最好的情况下,键可能出现在第一个索引处。所以最好的情况复杂度是 O(1)
  • 最坏的情况: 在最坏的情况下,键可能出现在最后一个索引处,即与列表中开始搜索的末尾相反的位置。因此,最坏情况的复杂度是 O(N),其中 N 是列表的大小。
  • 平均情况: O(N)

辅助空间: O(1),因为除了迭代列表的变量之外,没有使用其他变量。

线性搜索的优点:

  • 无论数组是否已排序,都可以使用线性搜索。它可以用于任何数据类型的数组。
  • 不需要任何额外的内存。
  • 它是一种非常适合小型数据集的算法。

线性搜索的缺点:

  • 线性搜索的时间复杂度为 O(N),这反过来又使得大型数据集的搜索速度变慢。
  • 不适合大型阵列。

什么时候使用线性搜索?

  • 当我们处理小数据集时。
  • 当您搜索存储在连续内存中的数据集时。

Searching Algorithms

相关推荐
lvxiangyu116 小时前
MPPI 算法证明重构:基于无穷维泛函变分与 KL 散度的构造性推导
算法·重构·最优控制·随机最优控制
2301_818419016 小时前
C++中的解释器模式变体
开发语言·c++·算法
ab1515177 小时前
3.25完成*23、*24、*28、*30、*33、*38、*39、*40
算法
颜酱7 小时前
回溯算法实战练习(3)
javascript·后端·算法
小王不爱笑1328 小时前
G1 GC 的核心基础:Region 模型的补充细节
java·jvm·算法
小王不爱笑1329 小时前
三色标记算法
算法
小O的算法实验室9 小时前
2026年AST SCI1区TOP,基于速度障碍法的多无人机三维避障策略,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
U-52184F6910 小时前
深入理解“隐式共享”与“写时复制”:从性能魔法到内存深坑
java·数据库·算法
pp起床10 小时前
Part02:基本概念以及基本要素
大数据·人工智能·算法
lzh2004091910 小时前
红黑树详解
算法