Swift程序 编写递归线性搜索元素数组
线性搜索,也称为顺序搜索,是从列表或数组的开头开始逐个比较每个元素,直到找到所需元素或搜索完整个列表或数组的搜索方式。递归线性搜索则是应用递归方法实现线性搜索。
在Swift编程语言中,我们可以编写一个递归线性搜索元素数组的程序,以便快速找到需要的元素。以下是一个简单的示例代码:
func linearSearch<T: Equatable>(_ arr: [T], _ x: T, _ i: Int) -> Int? {
if i >= arr.count {
return nil
} else if arr[i] == x {
return i
} else {
return linearSearch(arr, x, i+1)
}
}
let a = [10, 20, 30, 40, 50, 60, 70]
let x = 40
if let index = linearSearch(a, x, 0) {
print("Element \(x) found at index \(index)")
} else {
print("Element \(x) not found")
}
在上面的代码中,我们定义了一个名为linearSearch的函数,该函数具有三个参数:元素数组、搜索元素和当前搜索索引。函数首先检查当前搜索索引是否超出数组长度。如果是,则返回nil,表示元素未找到。如果搜索元素与当前哈希表索引处的元素匹配,则返回索引。否则,函数将递归再次调用自身,使用下一个索引递归调用。
此递归过程将一直进行,直到找到所需元素或完全搜索整个数组。
我们可以使用以下代码测试我们的函数:
let a = ["apple", "banana", "orange", "kiwi"]
let x = "orange"
if let index = linearSearch(a, x, 0) {
print("Element \(x) found at index \(index)")
} else {
print("Element \(x) not found")
}
在这个测试用例中,我们使用一个字符串数组和一个字符串来测试我们的函数。结果应该是“Element orange found at index 2”。
结论
递归线性搜索是一种常用的搜索算法,特别是当集合中的元素数量相对较小时,它的执行效率非常高。在Swift编程语言中,我们可以很容易地编写一个简单的递归线性搜索元素数组的程序,以快速找到需要的元素。