25、Ruby 数据结构与算法:集合与映射

Ruby中集合与映射详解

Ruby 数据结构与算法:集合与映射

1. 集合的链式实现

在实现集合时,连续存储方式存在一定问题,插入、删除和成员检查操作难以同时高效完成。链表同样存在这个问题。不过,有一种数据结构能够保证快速进行插入、删除和成员检查操作,那就是平衡搜索树。平衡搜索树的搜索时间复杂度为 $O(log n)$,插入和删除元素的时间复杂度也为 $O(log n)$。

使用搜索树实现的集合被称为树集。只要确保树集保持平衡,它就是一种非常高效的集合实现方式。树集还有一个优点,即可以按排序顺序遍历集合中的元素,这在某些应用场景中非常有用。

可以基于二叉搜索树、AVL 树或 2 - 3 树来创建树集。但二叉搜索树不能保证始终保持平衡,所以不使用它。而 AVL 树和 2 - 3 树之间没有特别的优劣之分,二者都可以使用。

1.1 不同数据结构实现集合的优缺点

数据结构 优点 缺点
数组或 ArrayList 若保持有序,成员检查操作快(可使用二分查找) 插入和删除操作慢,元素需移动以保持有序;若不保持有序,插入快,但删除和成员检查需顺序搜索,速度慢
链表 无明显优点 删除和成员测试慢,需线性搜索;若元素有序,插入更慢
平衡搜索树
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值