数据结构之哈希到底是什么?

#数据结构#哈希理解

参考:来吧!一文彻底搞定哈希表!_哈希表庆哥-CSDN博客

1、什么是哈希?

数据结构的本质目的就是为了快速寻找到想要的数据,下面举个例子。假如有一堆数据,记录着整个班级的姓名和身份信息,加入你想查询张三的身份信息,你总不能从头到尾查询张三的信息把,如果张三在末尾,是不是以前的检索就不正确了,假如根据姓名首字母排序,你是不是能忽略前面,直接定位到Z去寻找张三的信息。

对这个直接定位到Z去寻找张三的信息就是你快速寻找的方法,也就是哈希方法。

如上图所示,这个能让你找到关键位置的数据(张三)就是你的关键key,因为他很关键。

现在是不是能看懂百度百科的解释了:

散列表Hash table,也叫哈希表),是根据(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表

其实哈希的本质就是数组:

数组+链表、数组+树(数据村多了)

2、哈希冲突

哈希冲突很简单,上述例子如果有两个姓张的,那就会位置了,那就冲突了。

冲突解决有两个办法:

方案一:冲突了继续往后存一格,循环往复

方案二:冲突了就存链表,上个数字多存一个next,下个的位置信息,依次下去。

3、哈希函数

上述可见不好的哈希函数会有很多冲突,常见的哈希函数可采用:

,比如有直接定址法,数字分析法,折叠法,随机数法和除留余数法等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值