Set 定义为 : 不含重复元素的集合 ,它有多种实现方式
1 .线性结构 :
1.1 数组,可以设置有序数组 , 插入元素时 运行 插入排序算法
1.2 链表 , 内存分散 ,元素之间用指针相连 ,同样 插入元素时 运行 插入排序算法
2.二分搜索树
建立一个二叉树 , 可以二分插入
3.桶 (箱)(hash)算法
建立几个桶 ,每个桶中是元素的列表 , 首先将不同的元素分配到不同的桶中,然后 本桶内的元素插入排序
4.位向量方法
当元素是整数时,并已知元素的上界,用一个整数数组表示一个位集合,当插入整数n时,将第n位置1
效率比较: 当 元素上界为n,插入m个数时
| 集合表示 | 初始化 | 插入 | 遍历 | 总时间 | 空间 |
| 有序数组 | 1 | m | m | O(m^2) | m |
| 有序链表 | 1 | m | m | O(m^2) | 2m |
| 二叉树 | 1 | logm | m | O(mlogm) | 3m |
| 箱 | m | 1 | m | O(m) | 3m |
| 位向量 | n | 1 | n | O(n) | n/b |
本文探讨了Set集合的不同实现方式,包括线性结构(数组和链表)、二分搜索树、桶算法及位向量方法。通过对比这些实现方式在初始化、插入、遍历操作上的时间和空间效率,为选择合适的Set实现提供了依据。

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



