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.