美文网首页
线性搜索

线性搜索

作者: 继续向前冲 | 来源:发表于2018-06-08 14:08 被阅读20次

    目标:在数组中找到特定的值。

    我们有一个通用对象数组。使用线性搜索,我们遍历数组中的所有对象,并将每个对象与我们要查找的对象进行比较。如果两个对象相等,我们停止并返回当前的数组索引。如果不是,只要我们有数组中的对象,我们就继续寻找下一个对象。

    一个例子

    假设我们有一个数组数组,[5, 2, 4, 7]我们想检查数组是否包含数字2

    我们首先将数组中的第一个数字5与我们正在查找的数字进行比较2。它们显然不一样,所以我们继续下一个数组元素。

    我们将2阵列中的数字2与我们的数字进行比较,并注意它们是相等的。现在我们可以停止迭代并返回1,它是2数组中数字的索引。

    代码

    这是Swift中线性搜索的简单实现:

    func linearSearch<T: Equatable>(_ array: [T], _ object: T) -> Int? {
      for (index, obj) in array.enumerated() where obj == object {
        return index
      }
      return nil
    }
    

    把这段代码放在一个操场上,像这样测试它:

    let array = [5, 2, 4, 7]
    linearSearch(array, 2)  // This will return 1
    

    性能

    线性搜索在** O(n)**处运行。它将我们正在查找的对象与数组中的每个对象进行比较,所需时间与数组长度成正比。在最糟糕的情况下,我们需要查看数组中的所有元素。

    最好的情况是**O(1) **但这种情况很少发生,因为我们要查找的对象必须定位在数组的开头才能立即找到。你可能会很幸运,但大多数时候你不会。平均而言,线性搜索需要查看数组中一半的对象。

    相关文章

      网友评论

          本文标题:线性搜索

          本文链接:https://www.haomeiwen.com/subject/wkcasftx.html