Ruby 数据结构与算法:集合与映射
1. 集合的链式实现
在实现集合时,连续存储方式存在一定问题,插入、删除和成员检查操作难以同时高效完成。链表同样存在这个问题。不过,有一种数据结构能够保证快速进行插入、删除和成员检查操作,那就是平衡搜索树。平衡搜索树的搜索时间复杂度为 $O(log n)$,插入和删除元素的时间复杂度也为 $O(log n)$。
使用搜索树实现的集合被称为树集。只要确保树集保持平衡,它就是一种非常高效的集合实现方式。树集还有一个优点,即可以按排序顺序遍历集合中的元素,这在某些应用场景中非常有用。
可以基于二叉搜索树、AVL 树或 2 - 3 树来创建树集。但二叉搜索树不能保证始终保持平衡,所以不使用它。而 AVL 树和 2 - 3 树之间没有特别的优劣之分,二者都可以使用。
1.1 不同数据结构实现集合的优缺点
| 数据结构 | 优点 | 缺点 |
|---|---|---|
| 数组或 ArrayList | 若保持有序,成员检查操作快(可使用二分查找) | 插入和删除操作慢,元素需移动以保持有序;若不保持有序,插入快,但删除和成员检查需顺序搜索,速度慢 |
| 链表 | 无明显优点 | 删除和成员测试慢,需线性搜索;若元素有序,插入更慢 |
| 平衡搜索树 |
Ruby中集合与映射详解
超级会员免费看
订阅专栏 解锁全文
6

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



