
Map和Set
左子树不为空,则左子树中的所有节点值均小于根节点的值。 右子树不为空,则右子树中的所有节点值均大于根节点的值。 左右子树也都是二叉搜索树。 除留余数法:Hash(key) = key % p。 平方取中法:Hash(key) = (key^2 / m) mod p。 折叠法:Hash(key) = (sum of key的位组) mod p。
发布日期:2025-04-12 00:52:27
浏览次数:10
分类:精选文章
本文共 1108 字,大约阅读时间需要 3 分钟。
搜索树与哈希表
一、二叉搜索树
概念
二叉搜索树,又称二叉排序树,是一种常见的数据结构。它是一个空树或满足以下条件的二叉树:
二叉搜索树的特点是具有良好的查找性能,平均情况下时间复杂度为O(log n)。
操作
查找
查找操作基于二分搜索的原理,通过比较节点值和目标值来决定下一步操作方向。
插入
插入操作的逻辑类似查找,找到适当的位置后插入新节点。
删除
删除操作需要处理树的结构变化,确保树的平衡性。常用的方法是使用替换法或标记法。
二、Map与Set
概念
Map和Set是一种用于高效搜索的数据结构,主要用于存储键值对。Map存储唯一的键和对应的值,Set存储唯一的键。
操作
Map的常用方法包括:
put
:插入键值对。get
:根据键获取值。remove
:根据键删除键值对。containsKey
:检查键是否存在。size
:获取键值对数量。
Set的常用方法包括:
add
:添加元素。remove
:删除元素。contains
:检查元素是否存在。size
:获取元素数量。
实现
Map的实现类如TreeMap和HashMap,Set的实现类如TreeSet和HashSet。
三、哈希表
概念
哈希表是一种基于哈希函数的数据结构,通过将键转换为数组索引来存储和查找数据。
哈希冲突
哈希冲突是由于不同的键计算相同的哈希值导致的现象。解决方法包括线性探测、二次探测和开散列法。
哈希函数设计
常见的哈希函数包括:
负载因子调节
负载因子α = 填入元素数 / 表长度。通过调整表的大小来控制冲突率。
开散列与闭散列
开散列允许哈希冲突时将元素插入到下一个空槽;闭散列则采用线性探测或二次探测解决冲突。
性能
哈希表的查找性能平均为O(log n),插入和删除性能平均为O(1)或O(log n)。其优点是适合大量数据且单次操作高效。
四、应用场景
- Map:适用于需要存储和快速查找键值对的场景,如用户信息管理、数据统计等。
- Set:适用于需要存储唯一元素且快速查找的场景,如黑名单管理、唯一性验证等。
- 哈希表:适用于频繁的插入、删除和查找操作的场景,如缓存、表驱动存储等。
通过合理选择数据结构和算法,可以显著提升数据处理效率,适用于不同的应用场景。
发表评论
最新留言
不错!
[***.144.177.141]2025年05月12日 15时49分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mac/ip/TCP/udp报文格式与理论大小
2025-04-11
Mac:Permission denied XXX
2025-04-11
macaca 测试web(2)
2025-04-11
Macbook / pro卡顿怎么处理?这些方法让它满血复活!
2025-04-11
MacBook Air怎么重新输入wifi密码
2025-04-11
MacBook Pro 休眠后五国,自动重启报错
2025-04-11
Macbook Pro下Bootcamp上win7截图方法
2025-04-11
macbook 外接显示器黑屏,不显示
2025-04-11
macbook466加了两条1333金士顿正常
2025-04-11
MacBook开机出现问号文件夹?别急 可能是这些原因!
2025-04-11
MacBook键盘突然失灵?这几个排查步骤一定要试试!
2025-04-11
Macbook风扇突然一直狂转?一文搞定各种可能原因
2025-04-11
MacBook黑屏/白屏开不了机?一文搞定所有可能的解决方案!
2025-04-11
Machine Learning in Action -- 树回归
2025-04-11
macOS Big Sur 11.0.1 上未弹出应用程序
2025-04-11
MacOS Docket 安装及核心中间件环境搭建
2025-04-11
macOS Sierra 提示已损坏的文件如何打开
2025-04-11
MacOS:创建目录出现 Read-only file system
2025-04-11
MacOS中Mysql设置默认字符集
2025-04-11