首页 > 其他 > 详细

哈希表

时间:2019-02-23 22:15:09      阅读:145      评论:0      收藏:0      [点我收藏+]

哈希表

使用哈希函数插入数据的数组叫哈希表

哈希化

把一个大范围的数字转化成一个小范围的数字叫哈希化

哈希函数

把一个大范围的数字转化成一个小范围的数字的函数叫哈希函数

把关键字转化为数组下标

1、关键字不需要转换,比如员工编号从0到1000,关键字员工编号可以直接做为数组下标

2、把一部英文字典装入哈希表,a是1,b是2,c是3,依此类推,z是26,还有空格是0

1)数字相加 cats=3+1+20+19=43
假设单词最长有10个字母组成a的编码是1,zzzzzzzzzz是26*10=260,这样单词编码的范围是从1到260。不幸的是,字典中一共有50000个单词。数组下标太少,每个数组元素大概要存储50000/260=192个单词。

2)幂的连乘
7564= 7*10+ 5*10+ 6*101  +  4*100
cats=  3*27+ 1*10+ 20*101+ 19*100
这样每个单词对应独一无二的一个数字
最长的10个字母的单词zzzzzzzzzz,将转化成26*279+26*278+26*277+26*276+26*275+26*274+26*273+26*272+26*271+26*270
仅279就超过7000000000000,结果非常巨大,内存中的数组根本不可能有这么多的单元,产生的数组下标太多

3)哈希函数

取余法
index = x / arrayLength

哈希化后的冲突

开放地址法

线性探测、二次探测、再哈希法

链地址法

 

哈希表

原文:https://www.cnblogs.com/Mike_Chang/p/10424364.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!