数据结构:哈希表
一.简介
哈希表(hash,散列表)是根据关键码值(Key Value)而直接进行访问的数据结构
给定表 M,存在函数 F(key),对于任意给定的关键码值Key,代入函数后能得到包含该关键码值的记录在表中的地址
这个映射函数是散列函数,存放记录的数组叫做散列表
hash就是找到一种数据内容能够和数据存放地址之间的映射关系,hash table的查询速度几乎是O(1)的时间复杂度
二.散列函数
实际工作中根据不同的情况采用不同的哈希函数(散列函数):
(1) 计算哈希函数的时间
(2) 关键码值 Key 的长度
(3) 哈希表的大小
(4) 关键码值的分布情况
(5) 记录的查找频率
1.直接寻址法
2.数学分析法
3.平方取中法
4.折叠法
5.随机数法
6.除留余数法
三.哈希冲突
哈希冲突(hash collision)是不可避免的,如果遇到冲突可以采用开放定址法和链地址法
1.开放定址法
开放定址法是遇到冲突的时候查找顺着原来哈希地址查找下一个空闲地址然后插入
2.链地址法
链地址法是遇到冲突的时候在原地址新建一个节点空间,然后以链表的形式插入到该节点空间
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)