数据结构解析:从哈希表到布隆过滤器
1. 排序数组作为字典的分析
在处理联系人列表时,一种方法是对联系人进行排序,然后使用二分查找。但从运行时间来看,对列表进行排序的初始成本以及添加新条目的成本都很高。如果需要保留原始列表的顺序,还可能需要线性额外内存来复制原始列表。
| 操作 | 运行时间 | 额外内存 |
|---|---|---|
| 创建结构 | O(n*log(n)) | O(n) |
| 查找条目 | O(log(n)) | 否 |
| 添加新条目 | O(n) | 否 |
| 删除条目 | O(n) | 否 |
2. 哈希表:平均常数时间
哈希表用于实现关联数组,存储的值可能来自非常大的集合,但通常只需存储有限数量的值。使用哈希函数将可能值的集合(定义域)映射到较小的 M 元素集合(值域),即普通数组的索引。由于值域通常小于定义域,会出现冲突,哈希表使用链地址法或开放寻址法等策略解决冲突。
哈希表分为哈希映射和哈希集合,前者允许将值与键关联,后者仅记录键在集合中的存在与否。哈希集
超级会员免费看
订阅专栏 解锁全文
1023

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



