集合与哈希表:原理、应用与实现
1. 集合相关知识
1.1 集合运算示例
考虑集合 (S1 = {1, 2, 3}) 和 (S2 = {4, 5, 6}),这是一种最坏情况。计算 (S1 - S2) 时,需要对 (S1) 中的每个元素在 (S2) 中进行搜索,结果为 ({1, 2, 3});同理,计算 (S2 - S1) 时,要对 (S2) 中的每个元素在 (S1) 中搜索,结果是 ({4, 5, 6})。这两个集合的大小分别为 (m) 和 (n),它们的并集操作时间与 (m\times n) 成正比。不过,由于 (S1 - S2) 和 (S2 - S1) 产生的集合不会有重复元素,我们可以避免使用 set_union ,而是通过调用 (O(1)) 操作 list_ins_next ,将每个元素插入最终集合,共插入 (m + n) 次。虽然这在实践中是更好的实现方式,但不会改变整体复杂度。
1.2 集合与多重集合操作复杂度对比
| 操作 | 普通集合 | 多重集合 |
|---|---|---|
| 插入元素 | (O(n)),因为要搜索整个集合以确保不重复 | (O(1)),无需遍历查找重复元素 |
| 移除元素 | (O(n)),可能需要搜索整个集合 | (O(n)),仍需搜索要移除的元素 |
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



