哈希表(hash)
2017-03-29 12:34
148 查看
C++ hash
STL c++ hash_table 分析简介
由索引到值的数据结构(data structure that maps keys to values)直接映射,需要很大的空间。空间的利用率不高,为了将某一元素映射到一个“大小可以接受之索引”,这样的函数为hash function(散列函数或者哈希函数)。通常的哈希函数为取模。
哈希函数(hash function)
h(key) => hash table index好的哈希函数特点
易于计算分布均匀(Reduce chance of collision)
different keys should ideally map to different indices
distribute keys uniformly over table
复杂度(complexity)
最好情况O(1)查找最坏情况O(N)发生了冲突(collisions)
对于string类型哈希函数的设计
简单的ASCII码值相加,隐患很大使用前三个字符,以27为基,计算key值
使用所有字符,以比字符个数大的质数为基。26个字母,则选择,29,31,37
解决冲突的办法
分离链路(Chaining):在哈希表索引同样的地方,以链表的形式存储value开放地址(Open addressing):
二次哈希(double hash)
Reference
hash代码实现usc课件
cis课件
相关文章推荐
- C++ STL中哈希表 hash_map从头到尾详细介绍
- hash key list 哈希表测试(对tcp fragment报文建立会话信息生成哈希表,老化)
- 哈希表Hashtable与字典表Dictionary<K,V>的比较。(多线程推荐hash,单线程推荐dictionary)
- 菜鸟nginx源码剖析数据结构篇(六) 哈希表 ngx_hash_t(上)
- 线性探测法构造哈希表(hash)
- 散列查找 哈希表 Hash
- C++ STL中哈希表 hash_map介绍
- 学习一个 哈希表 Hash
- 一个非常重要的查找算法--哈希表查找(SearchHash)
- (四)Redis哈希表Hash操作
- C++ STL中哈希表 hash_map介绍
- C++ STL中哈希表 hash_map从头到尾详细介绍
- Redis基础之数据类型(Hash哈希表)
- hash命令:显示、添加或清除哈希表
- 菜鸟nginx源码剖析数据结构篇(六) 哈希表 ngx_hash_t(上)
- 菜鸟nginx源码剖析数据结构篇(七) 哈希表 ngx_hash_t(下)
- 菜鸟nginx源码剖析数据结构篇(七) 哈希表 ngx_hash_t(下)
- HASH(哈希表)学习
- 哈希表(Hash)的应用
- C++ STL中哈希表 hash_map介绍