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 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告