Swift 实现线性查找算法的程序


在 Swift 中,线性查找算法是最简单的查找算法。在线性查找算法中,搜索从索引 0 开始,逐个检查给定数组/序列中的所有元素,直到找到所需的元素。如果找到所需的元素,则返回该元素的索引。如果找不到所需的元素,则返回 null。

例如

我们有一个元素 M = 13,现在我们使用线性查找算法在以下数组中搜索 M −

线性查找算法从索引 0 开始,将 M=13 与每个元素逐个比较,如下面的图像所示 −

在上面的图像中,在给定数组中找到了 M 元素,因此它返回索引 3。否则,它将返回“元素未找到”。

算法

  • 步骤 1 − 创建一个函数,该函数接受两个参数:一个泛型类型为“M”的元素数组和一个类型为“M”的目标元素。

  • 步骤 2 − 在函数内部,运行一个 for 循环,该循环遍历数组的每个元素,并检查它们是否等于目标元素。

  • 步骤 3 − 如果目标元素等于当前元素,则返回该元素的索引。

  • 步骤 4 − 如果在给定数组中找不到目标元素,则此函数返回 nil。

  • 步骤 5 − 在函数外部创建一个数组和一个目标元素。

  • 步骤 6 − 现在调用该函数并将数组和目标元素传递给它以获取结果。

  • 步骤 7 − 打印输出。

示例 1

在下面的示例中,我们创建一个名为 linearSearchAlgorithm 的函数来实现线性查找算法。此函数接受两个参数:数组 = [2, 4, 19, 5, 23, 7, 16, 5, 18] 和目标元素 = 23。现在,该函数从索引 0 开始运行一个 for 循环,并使用 == 运算符检查当前元素是否等于目标元素 = 23。如果当前元素等于目标元素,则返回当前元素的索引。否则,移动到下一个元素。此过程持续到数组的末尾。如果找不到目标,则此函数返回 nil。在本例中,在给定数组中找到了目标元素。因此,我们得到“元素 23 位于索引 4”作为输出。

import Foundation
import Glibc
 
func linearSearchAlgorithm<M: Equatable>(_ array: [M], _ element: M) -> Int? {
   for x in 0..<array.count {
      if array[x] == element {
         return x
      }
   }    
   return nil
}

let arr = [2, 4, 19, 5, 23, 7, 16, 5, 18]
let ele = 23
if let indexValue = linearSearchAlgorithm(arr, ele) {
   print("Element \(ele) is found at index \(indexValue)")
} else {
   print("Element \(ele) is not found in the given array.")
}

输出

Element 23 is found at index 4

示例 2

在下面的示例中,我们将创建一个名为 linearSearchAlgorithm 的函数来实现线性查找算法。此函数接受两个参数:数组 = [2, 4, 6, 12, 56, 3, 8] 和目标元素 = 6。现在,该函数使用 enumerated() 方法迭代数组的每个元素。enumerated() 方法在每次迭代中返回一个包含元素索引和值的元组。因此,如果目标元素与当前元素匹配,则此函数返回该元素的索引。否则,返回 nil。在本例中,在给定数组中找到了目标元素。因此,函数返回 indexValue = 2。

import Foundation
import Glibc
 
func linearSearchAlgorithm<M: Equatable>(_ array: [M], _ element: M) -> Int? {
   for (indexValue, Celement) in array.enumerated() {
      if Celement == element {
         return indexValue
      }
   }
   return nil
}

let arr = [2, 4, 6, 12, 56, 3, 8]
let ele = 6
if let indexValue = linearSearchAlgorithm(arr, ele) {
   print("Element \(ele) is found at index \(indexValue)")
} else {
   print("Element \(ele) is not found in the given array.")
}

输出

Element 6 is found at index 2

结论

这就是我们如何实现线性查找算法。线性查找算法可以处理已排序或未排序的序列。线性查找算法的最佳执行时间为 1,而最差执行时间为 n,其中 n 表示搜索数组中的元素总数。虽然线性查找算法是最简单的算法,但它不适用于较大的数组。

更新于:2023年4月21日

486 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.