实现线性搜索算法的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的函数来实现线性搜索算法。此函数接受两个参数:array = [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("元素 \(ele) 在索引 \(indexValue) 处找到")
} else {
print("给定数组中未找到元素 \(ele)。")
}
输出
元素 23 在索引 4 处找到
示例2
在本例中,我们将创建一个名为linearSearchAlgorithm的函数来实现线性搜索算法。该函数接受两个参数:array = [2, 4, 6, 12, 56, 3, 8]和目标元素= 6。现在,该函数使用枚举()方法遍历数组的每个元素。枚举()方法返回一个包含每次迭代中元素的索引和值的元组。因此,如果目标元素与当前元素匹配,则此函数返回该元素的索引。否则,返回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("元素\(ele)的索引为\(indexValue)")
} else {
print("在给定数组中未找到元素\(ele)。")
}
输出
元素 6 的索引为 2
结论
因此,这就是我们如何实现线性搜索算法。线性搜索算法可以处理排序或未排序的序列。线性搜索算法的最佳执行时间为1,而最差执行时间为n,其中n表示搜索数组中的元素总数。尽管线性搜索算法是最简单的算法,但不适用于较大的数组。