散列表

8 篇文章 0 订阅
7 篇文章 0 订阅

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

在这里插入图片描述
这里有一串名字 他们各自对应一段编号。我们根据名字来找到编号 这种就称为散列表或是哈希表
最简单的方法就是准备一个数组 将这些键值对散列在不同的单元格中,但是如果要找某一个编号就要从头开始遍历,比较耗时。
而散列表先把键通过某种映射获得数组的索引,然后根据索引直接找到,这样就比较快。
某种映射就是散列函数,最简单的就是取余数。在这里插入图片描述
取什么余数呢,我们先把键的每个字符找到对应的ASCII编码。
比如john 就是 106 111 104 110 先把他们加一起 再%10 即可得到索引值
(106+111+104+110)%10=1
但是这样取的不够分散 更好的办法是将字符的位置信息也加进去
就是秦九韶法则 (((106*32+111)*32+104)*32)+110

就算我们有了一个合适的散列函数 但是还是无法避免有两个或以上的值被映射到同一列
这时就可以用到开放地址法
开放地址法用到了f(i)=i^2 简单解释过来就是每次遇到相同的顺移4次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值