码迷,mamicode.com
首页 > 其他好文 > 详细

Hash表

时间:2018-03-04 11:43:20      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:两种   post   哈希表   相关   代码   常量   函数   tables   哈希函数   

1.哈希表最重要的作用是实现O(1)效率的查找,首先有一个哈希函数确定元素在表中的位置;其次是解决冲突,其实现主要有两种:

(1)链地址法:数组+链表 
(2)探测法(开放地址法,线性、二次):哈希函数为 H[i](x)= (hash(x)+f(i)) mod TableSize 。H[i](x)为表中位置, f(i)为解决冲突的函数   f(0)=0,线性探测f(i)=i。
2.链地址哈希表装填因子一般接近1。链地址法当装载因子超过0.5时,性能急速下降,此时可以考虑扩展哈希表。其他还有布谷鸟散列和跳房子散列。
3.通用散列函数:Ha,b(x)=((ax+b) mod p) mod M 其中p为素数,M为表大小,0 <a,b<=p-1。
4.散列表不能直接找出最小、最大元素,跟排序相关的数据最好用二叉查找树(输入数据可能有序的时候一般不用,效率很差),不需要有序或者对输入数据有序存有怀疑可以选用哈希表。
5.对于任何带有实际名字而非数字的节点的图论问题优先考虑哈希表。
6.String类型的哈希值为各个字符的ASCII码值乘以37后累加而成,因为String对象是常量,所以进行再散列时我们可以避免昂贵的重复计算哈希函数,这个技巧叫做闪存散列代码。

Hash表

标签:两种   post   哈希表   相关   代码   常量   函数   tables   哈希函数   

原文地址:https://www.cnblogs.com/jetHu/p/8503808.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!