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()` 函数是搜索集合中元素的更省时的方法。