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

相关推荐
屁股割了还要学18 小时前
【数据结构入门】排序算法(4)归并排序
c语言·数据结构·学习·算法·排序算法
努力学习的小廉19 小时前
我爱学算法之—— 位运算(上)
c++·算法
ゞ 正在缓冲99%…19 小时前
leetcode35.搜索插入位置
java·算法·leetcode·二分查找
lifallen19 小时前
字节跳动Redis变种Abase:无主多写架构如何解决高可用难题
数据结构·redis·分布式·算法·缓存
feifeigo12320 小时前
星座SAR动目标检测(GMTI)
人工智能·算法·目标跟踪
WWZZ202520 小时前
视觉SLAM第10讲:后端2(滑动窗口与位子图优化)
c++·人工智能·后端·算法·ubuntu·机器人·自动驾驶
YuTaoShao20 小时前
【LeetCode 每日一题】36. 有效的数独
linux·算法·leetcode
IT古董20 小时前
【漫话机器学习系列】003.Agglomerative聚类
人工智能·算法·机器学习
zstar-_20 小时前
【不背八股】12.十大排序算法
数据结构·算法·排序算法
吃着火锅x唱着歌20 小时前
LeetCode 2110.股票平滑下跌阶段的数目
数据结构·算法·leetcode