Swift程序 編寫遞歸線性搜索元素?cái)?shù)組
線性搜索,也稱為順序搜索,是從列表或數(shù)組的開頭開始逐個(gè)比較每個(gè)元素,直到找到所需元素或搜索完整個(gè)列表或數(shù)組的搜索方式。愛掏網(wǎng) - it200.com遞歸線性搜索則是應(yīng)用遞歸方法實(shí)現(xiàn)線性搜索。愛掏網(wǎng) - it200.com
在Swift編程語言中,我們可以編寫一個(gè)遞歸線性搜索元素?cái)?shù)組的程序,以便快速找到需要的元素。愛掏網(wǎng) - it200.com以下是一個(gè)簡(jiǎn)單的示例代碼:
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")
}
在上面的代碼中,我們定義了一個(gè)名為linearSearch的函數(shù),該函數(shù)具有三個(gè)參數(shù):元素?cái)?shù)組、搜索元素和當(dāng)前搜索索引。愛掏網(wǎng) - it200.com函數(shù)首先檢查當(dāng)前搜索索引是否超出數(shù)組長(zhǎng)度。愛掏網(wǎng) - it200.com如果是,則返回nil,表示元素未找到。愛掏網(wǎng) - it200.com如果搜索元素與當(dāng)前哈希表索引處的元素匹配,則返回索引。愛掏網(wǎng) - it200.com否則,函數(shù)將遞歸再次調(diào)用自身,使用下一個(gè)索引遞歸調(diào)用。愛掏網(wǎng) - it200.com
此遞歸過程將一直進(jìn)行,直到找到所需元素或完全搜索整個(gè)數(shù)組。愛掏網(wǎng) - it200.com
我們可以使用以下代碼測(cè)試我們的函數(shù):
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")
}
在這個(gè)測(cè)試用例中,我們使用一個(gè)字符串?dāng)?shù)組和一個(gè)字符串來測(cè)試我們的函數(shù)。愛掏網(wǎng) - it200.com結(jié)果應(yīng)該是“Element orange found at index 2”。愛掏網(wǎng) - it200.com
遞歸線性搜索是一種常用的搜索算法,特別是當(dāng)集合中的元素?cái)?shù)量相對(duì)較小時(shí),它的執(zhí)行效率非常高。愛掏網(wǎng) - it200.com在Swift編程語言中,我們可以很容易地編寫一個(gè)簡(jiǎn)單的遞歸線性搜索元素?cái)?shù)組的程序,以快速找到需要的元素。愛掏網(wǎng) - it200.com