Swift 遞迴線性搜尋陣列元素的程式


在 Swift 中,線性搜尋是最簡單的搜尋演算法。它也稱為順序搜尋,因為它逐個檢查給定陣列或序列中的所有元素。如果找到目標元素,則返回該陣列的索引,否則返回元素未找到。因此,讓我們使用遞迴線性搜尋來檢查給定陣列是否包含目標元素。

演算法

  • 步驟 1 − 建立一個函式,使用遞迴線性搜尋檢查給定元素是否在指定陣列中。

  • 步驟 2 − 在函式內部,我們使用 if-else 條件來檢查元素是否存在。

  • 步驟 3 − 如果未找到元素,則此函式將返回 nil。

  • 步驟 4 − 如果找到元素,則此函式將返回該函式的索引值。

  • 步驟 5 − 如果兩個基本條件都不滿足,則該函式將自身遞迴呼叫,使用相同的陣列和目標元素,但索引值遞增 1。此過程將持續到滿足任何一個基本條件為止。

  • 步驟 6 − 在函式外部建立陣列和目標元素。

  • 步驟 7 − 現在呼叫該函式並將陣列和目標元素傳遞給它以獲取輸出。

示例

在下面的 Swift 示例中,我們將建立一個函式,該函式接受三個引數:陣列、目標元素和初始索引值(為 0),並返回一個可選整數型別的值,如果在陣列中找到目標元素,則表示索引,如果未找到目標元素,則返回 nil。此函式具有以下基本條件:−

如果當前索引超出範圍或未找到目標元素,則此函式返回 nil。

如果當前元素等於目標元素,則此函式返回索引。

如果這兩個條件都不匹配,則該函式將自身遞迴呼叫,使用相同的陣列和目標元素,但索引值遞增 1,將有效地搜尋陣列的下一個元素。

此過程將持續到滿足任何一個基本條件為止。

import Foundation
import Glibc

func recursiveSearch(arr: [Int], ele: Int, index: Int = 0) -> Int? {

   // If the element not found
   if index >= arr.count { 
      return nil
   } 
    
   // If the element is found
   else if arr[index] == ele {
      return index
   }
    
   // For recursive case
   else {
      return recursiveSearch(arr: array, ele: E, index: index + 1)
   }
}

// Test Case
let array = [2, 6, 2, 5, 3, 7, 4, 9, 6]
let E = 4

if let index = recursiveSearch(arr: array, ele: E) {
   print("Element: \(E) is found at index:", (index))
} else {
   print("Element: \(E) is not found")
}

輸出

Element: 4 is found at index: 6

結論

這就是我們如何遞迴線性搜尋陣列中的元素。在這裡,我們使用遞迴方法線上性搜尋陣列中的元素,這可以輕鬆地從陣列中搜索指定的元素。

更新於: 2023年4月24日

203 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告