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

相关推荐
胡萝卜术36 分钟前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
Asize1 小时前
初识DFS 与 BFS:递归、队列与图遍历
算法
罗西的思考15 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
美团技术团队18 小时前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
To_OC1 天前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC1 天前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
BadBadBad__AK2 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
_清歌2 天前
DSpark 深度解读:DeepSeek-V4 如何用「半自回归」把推理速度提升 85%
算法
统计实现局2 天前
SVD 的三步走:双对角化、Givens 收敛、排序
算法