哈希表(hash table)的基本知识
来源:互联网 发布:qq聊天软件 编辑:程序博客网 时间:2024/05/22 23:36
1、哈希表的定义
哈希表又叫散列表,英文全称为hash table,是将关键字(key)映射到一个固定大小的数组的数据结构。它主要是通过散列函数(hash function)实现key->hash value的映射,并将key存放到适当的单元中。
哈希表可以实现O(1)时间内的插入、删除、查找,是一种非常有用的数据结构。
2、散列函数(hash function)
理论上,散列函数应该运算简单,且保证任何两个不同的key映射到不同的单元。然而,实际中这点是不可能的,因为散列表的大小是有限的,而key的数量可以是无限的。将不同的key映射到相同的value就导致了冲突,需要采用冲突处理策略。
因此,一个好的散列函数应该是将key均匀地分布在数据单元中,因为非均匀的分布会增加冲突的机会,造成更多的冲突处理的开销。
3、散列函数的选择
3.1 key的整数
如果key为整数,一般的方法是:
int m_hash(const int key,int table_size){return key%table_size;}
其中,table_size为哈希表的大小。
然而,当table_size=10,而所有key的各位均为0,所有的hash value均为0,此时哈希函数就不是一个好的散列函数。为避免上述情况,通常将table_size设为素数。
0 0
- 哈希表(hash table)的基本知识
- Hash Table(哈希表)
- 哈希表(Hash Table)
- 哈希表(Hash table)
- 哈希表(Hash Table)
- Hash函数的基本知识
- hash函数的基本知识
- 哈希表(Hash table)(1)
- LeetCode---哈希表(hash table)
- [数据结构]Hash Table(哈希表)
- hash表的一些基本知识
- Hash Table哈希表和Hash List哈希链表的知识汇总
- hash function/ hash table 背后的数学基础(二)
- Hash Table的补充
- Hash Table 的实现
- 哈希表基础知识(hash table)(1)
- 理解哈希表2(Hash Table)
- 哈希表(hash table)及其应用举例
- IO多路复用总结:select pool epoll
- “XXX.Index”不扩展类“System.Web.UI.Page”,因此此处不允许的问题
- 3D数学之-三角形网格
- LeetCode 之 Add Two Numbers — C 实现
- 26款 网络会议/视频会议开源软件
- 哈希表(hash table)的基本知识
- HLJU 1220: AC100天 (枚举)
- VS2013 调试时的 0xCCCCCCCC 读取字符串的字符时出错
- java4Android(6)函数的复写(override)/对象的转型(向上转型/向下转型)
- NYOJ 20吝啬的国度(vector容器+dfs||邻接表+dfs)
- 07库函数编写
- LeetCode 之 ZigZag Conversion — C 实现
- 这些年看过的电影
- 推荐15个 Node.js 开发工具