Swift程式:在集合中搜索元素


在 Swift 中,搜尋集合中的元素可以使用 `contains(_:)` 函式或線性搜尋。這兩種方法都能有效地搜尋集合中的元素。讓我們詳細討論這兩種方法以及示例。

方法 1:使用 `contains(_:)` 函式

Swift 提供了一個名為 `contains()` 的內建函式來搜尋集合中的元素。如果集合中存在指定的元素,則此函式返回 `true`。如果集合中不存在指定的元素,則此函式返回 `false`。

語法

sets.contains(myElement)

其中 `sets` 是一個有限集合,`myElement` 代表我們要在 `sets` 中搜索的目標元素。此函式返回一個布林值,指示給定元素是否存在於集合中。

演算法

  • 步驟 1 − 建立並初始化一個集合。

  • 步驟 2 − 建立一個名為 `ele = "Tomato"` 的變數來儲存我們要在集合中搜索的元素。

  • 步驟 3 − 現在使用 `contains()` 函式檢查集合是否包含 `ele`。

  • 步驟 4 − 如果集合包含 `ele`,則列印 "Yes! veggies 集合包含 ‘Tomato’"。

  • 步驟 5 − 如果集合不包含 `ele`,則列印 "No! veggies 集合不包含 ‘Tomato’"。

示例

在下面的 Swift 示例中,我們將建立一個名為 ‘veggies’ 的集合並對其進行初始化。然後,我們建立一個名為 ‘ele’ 的變數來儲存我們要在 veggies 集合中搜索的元素。然後,我們使用 `contains(_:)` 函式在 veggies 集合中搜索 ‘Tomato’ 元素。如果 `contains(_:)` 函式返回 `true`,則我們列印 "Yes! veggies 集合包含 'Tomato'"。否則,我們列印 "No! veggies 集合不包含 'Tomato'"。這裡 ‘Tomato’ 存在於給定集合中,因此我們得到 "Yes! veggies 集合包含 'Tomato'" 訊息。

import Foundation
import Glibc

// Creating a set
var veggies: Set<String> = ["Pea", "Onion", "Potato", "Tomato", "Chilli"]

// Element to be searched
var ele = "Tomato"

// Search ele in veggies set
if veggies.contains(ele) {
   print("Yes! veggies set contains 'Tomato'")
} else {
   print("No! veggies set does not contain 'Tomato'")
}

輸出

Yes! veggies set contains 'Tomato'

方法 2:使用線性搜尋

要搜尋集合中的元素,我們也可以使用線性搜尋。線上性搜尋中,我們從開始順序搜尋元素,直到找到所需的元素。如果未找到元素,則返回 `nil`。

演算法

  • 步驟 1 − 建立並初始化一個集合。

  • 步驟 2 − 建立一個名為 `ele = 18` 的變數來儲存我們要在集合中搜索的元素。

  • 步驟 3 − 建立另一個名為 `flag` 的變數來跟蹤是否找到元素。`flag` 變數設定為 `false`。如果找到元素,則 `flag` 的值將更改為 `true`。否則不變。

  • 步驟 4 − 然後執行一個 for-in 迴圈來遍歷集合的每個元素,並檢查當前元素是否等於 `ele`。如果找到匹配項,則將 `flag` 設定為 `true` 並中斷迴圈。

  • 步驟 5 − 最後我們檢查 `flag` 的值。

  • 步驟 6 − 如果 `flags` 為 `true`,則列印 "YES! 集合包含 ‘\(ele)’"。

  • 步驟 7 − 如果 `flags` 為 `false`,則列印 "NO! 集合不包含 ‘\(ele)’"。

示例

在下面的 Swift 示例中,我們將建立一個名為 ‘myNum’ 的集合並對其進行初始化。然後,我們建立一個名為 ‘ele’ 的變數來儲存我們要在 myNum 集合中搜索的元素。我們還建立了一個 `flag` 變數,它將跟蹤元素是否存在於集合中。然後,我們執行一個 for 迴圈來遍歷給定集合的每個元素,並檢查指定的元素是否存在。如果找到元素,則將 `flag` 變數的值設定為 `true` 並中斷迴圈。現在我們檢查 `flag` 變數的值並相應地顯示訊息。如果 `flag` 的值為 `true`,則列印 "YES! 集合包含 ‘\(ele)’"。否則列印 "NO! 集合不包含 ‘\(ele)’"。在本例中,18 存在於集合中,因此我們得到 "YES! 集合包含 '18'" 訊息。

import Foundation
import Glibc

// Creating a set
var myNum: Set = [23, 14, 2, 18, 22, 15, 16]

// Element to be searched
let ele = 18
var flag = false

// Search ele in myNum set
for element in myNum {
   if element == ele {
      flag = true
      break
   }
}

if flag {
   print("YES! set contains '\(ele)'")
} else {
   print("NO! set does not contain '\(ele)'")
}

輸出

YES! set contains '18'

結論

這就是我們在集合中搜索元素的方法。`contains()` 函式和線性搜尋方法都返回準確的結果。與線性搜尋相比,這裡使用 `contains()` 函式是搜尋集合中元素的更省時的方法。

更新於:2023年4月24日

326 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告