算法笔记4-散列表

散列表(hashTable的原理)

也叫哈希表,是根据关键码值(key-value),直接进行访问的数据结构。将关键码值映射到表的一个位置来访问,加快查找速度。这个映射函数叫散列函数。存放记录的数组叫散列表。

y = f(x); x是关键字,f是散列函数(哈希函数),y是记录的存储位置。

目的:

数组特点:寻址容易,插入和删除困难

链表特点:寻址困难,插入和删除容易

二者结合,最常用的一种方法-拉链法。



优点:不论哈希表有多少数据,查找、插入、删除,需要接近常量的时间即o(1)的时间级。哈希表运行的非常快。查找明显比树快,树的操作是o(n)的时间级。

缺点:它是基于数组,数组创建后难扩展。哈希表被基本填满时,性能下降非常严重。


散列冲突的解决方案:

开放寻址法,再散列法。

1.建立一个缓冲区,把拼音重复的人放在缓存区中。当我通过名称找人时,发现找的不对,则在缓存区找。

2.再探测,在其他的地方查找。

百度面试题:海量日志数据,提取出某日访问百度次数最多的IP

方案:IP数目是有限的,最多2^32个。但是2^32 = 4G不能完全放在内存。所以可以考虑使用将部分hash将ip存入内存,然后统计。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值