Swift 程序在集合中搜索元素
在 Swift 中,要在集合中搜索元素,我们可以使用 contains(_:) 函数或线性搜索。这两种方法都能有效地在集合中搜索元素。我们将结合示例详细讨论这两种方法。
方法 1:使用 contains(_:) 函数
Swift 提供了一个名为 contains() 的内置函数来在集合中搜索元素。如果指定元素存在于给定集合中,则此函数返回 true。如果指定元素存在于给定集合中,则此函数返回 false。
语法
sets.contains(myElement)
其中 sets 是一个有限集,myElement 表示我们要在集合中搜索的目标元素。此函数返回一个布尔值,指示给定元素是否存在于集合中。
算法
步骤 1 - 创建并初始化一个集合。
步骤 2 - 创建一个名为 ele = "Tomato" 的变量,用于存储我们想要在集合中找到的元素。
步骤 3 - 现在使用 contains() 函数检查集合是否包含 ele。
步骤 4 - 如果集合包含 ele,则打印"是!蔬菜集合包含'Tomato'"。
步骤 5 - 如果集合不包含 ele,则打印"否!蔬菜集合不包含"番茄"。
示例
在下面的 Swift 示例中,我们将创建并初始化一个名为"蔬菜"的集合。然后,我们创建一个名为"ele"的变量来存储我们想要在蔬菜集合中搜索的元素。然后,我们使用 contains(_:) 函数在蔬菜集合中搜索"番茄"元素。如果 contains(_:) 函数返回 true,则打印"是!蔬菜集合包含'番茄'"。否则,打印"否!蔬菜集合不包含'番茄'"。这里,"番茄"存在于给定的集合中,因此我们收到"是!蔬菜集合包含'番茄'"消息。
import Foundation
import Glibc
// 创建集合
var veggies: Set <String > = ["Pea", "Onion", "Potato", "Tomato", "Chilli"]
// 待搜索元素
var ele = "Tomato"
// 在 veggies 集合中搜索元素
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 集合中搜索的元素。我们还创建了一个标志变量,用于跟踪该元素是否存在于集合中。然后,我们运行一个 for 循环来遍历给定集合中的每个元素,并检查指定的元素是否存在。如果找到该元素,则将标志变量的值设置为 true 并跳出循环。现在,我们检查标志变量的值并显示相应的消息。如果标志值为 true,则打印"YES! set contains '\(ele)'"。否则,打印"NO! set does not contain '\(ele)'"。在本例中,集合中存在 18 个元素,因此我们收到"YES! set contains '18'"消息。
import Foundation
import Glibc
// 创建集合
var myNum: Set = [23, 14, 2, 18, 22, 15, 16]
// 待查找元素
let ele = 18
var flag = false
// 在 myNum 集合中查找 ele
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() 函数比线性搜索更节省时间。