数据结构与算法(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

相关推荐
路人与大师30 分钟前
用算法实现 用统计的方式实现 用自然语言处理的方法实现 用大模型实现 专利精益化统计分析
人工智能·算法·自然语言处理
五点钟科技31 分钟前
大语言模型的完整训练周期从0到1的体系化拆解
算法·自然语言处理
Dxy12393102161 小时前
Python经典算法实战
开发语言·python·算法
五步晦暝1 小时前
【排序算法】典型排序算法 Java实现
java·算法·排序算法
小猿_004 小时前
C语言指针进阶
c语言·数据结构·算法
摆烂仙君5 小时前
小米2025年校招笔试真题手撕(二)
算法
xin007hoyo9 小时前
算法笔记·数学·最大公约数
笔记·算法
丶Darling.10 小时前
Day126 | 灵神 | 二叉树 | 层数最深的叶子结点的和
数据结构·c++·算法·二叉树·深度优先
小O的算法实验室10 小时前
2025年ESWA SCI1区TOP,离散人工蜂群算法+多农场多除草机器人任务分配,深度解析+性能实测
算法·智能算法改进
2401_8590490811 小时前
Git使用
arm开发·git·stm32·单片机·mcu·算法