哈希表存储效率50%的原因
2014-07-03 10:43
295 查看
本文主要是讲"哈希表的存储效率一般不超过50%"的原因。
Hash Table 常用于频繁进行 key/value 模式的查找中。(查找模式,如匹配查找)
哈希表最大的优点在于查找速度快,但存储时可能发生collision(冲突)。
哈希表大多使用open addressing来解决collision,此时search的时间复杂度计算公式为:
1/( 1 - n/m )
其中,n与m分别表示存储的记录数与哈希表的长度,即装填因子(
load factor )
故,若哈希表半满,即 n/m >= 1/2,则每次的search次数可能会 >= 2
因此,为了保证Hash Table在 key/value 查找模式中的优势,一般,其存储效率不会超过50%。
Hash Table 常用于频繁进行 key/value 模式的查找中。(查找模式,如匹配查找)
哈希表最大的优点在于查找速度快,但存储时可能发生collision(冲突)。
哈希表大多使用open addressing来解决collision,此时search的时间复杂度计算公式为:
1/( 1 - n/m )
其中,n与m分别表示存储的记录数与哈希表的长度,即装填因子(
load factor )
故,若哈希表半满,即 n/m >= 1/2,则每次的search次数可能会 >= 2
因此,为了保证Hash Table在 key/value 查找模式中的优势,一般,其存储效率不会超过50%。
相关文章推荐
- 哈希表存储效率50%的原因
- 哈希表存储效率一般不超过50%
- 浅谈哈希表存储效率一般不超过50%的原因
- 微博feed分级缓存的极致优化带来50%的效率提升
- StringBuilder效率比String高的原因。
- 效率不高的7个原因
- 桌面支持--outlook无法转发(原因是存储盘空间不足)
- 集群存储与闪存:提升企业级存储效率的两种手段
- 【专题一】存储效率,服务交付,数据保护,对于企业级存储哪个更重要?――服务交付
- 使用MyEclipse中用Hibernate反向工程生成的DAO会发生对象无法存储到数据库的现象,原因是没有运用事务。
- 第三大原因: 遗留及其跨浏览器支持,游戏开发,更好的互动,更聪明的存储
- 浅析PHP的静态成员函数效率更高的原因
- 关于PB调用写有事务开始的存储过程出错的原因
- .net 执行oracle存储过程时 找不到存储过程名,总是找函数的原因
- Berkeley DB的数据存储结构——哈希表(Hash Table)、B树(BTree)、队列(Queue)、记录号(Recno)
- APNS导致消息丢失和发送效率原因
- APNS导致消息丢失和发送效率原因
- 算法效率的度量和存储空间需求
- 通过class字节码了解StringBuilder拼接字符串效率高的原因
- 【专题一】存储效率,服务交付,数据保护,对于企业级存储哪个更重要?――存储效率