哈希三部曲:一:哈希概念

关于哈希的概念已经有太多

我也不想讨论太多

在此只做简单的介绍

哈希:就是在数据的存储过程中将  数据  与  所存储的位置 通过  哈希函数  所绑定在一起

举个简单的例子:

我们有一个可以存储10个元素的数组:array[MAX_SIZE],  其中 MAX_SIZE=10;

我们有4个数据 (data) 需要存储到这个数组中

我们可以通过一个简单的哈希函数(除留余数法)来处理这些数据,以得到一个在数组中的地址

具体为:

然后存储结果为:

如此存储,当我们想要查询某个数据是否在数组中时,就可以直接对这个数据进行哈希函数处理得到位置,

然后在数组中的这个位置查询即可,就不用通过遍历数组的方式,简单快捷

但是这种方式会出现问题

号称:哈希冲突:两个不同的数据 通过 同一个哈希函数 得到 同一个哈希地址

具体为

我们在数组中新加一个数据:13

他的哈希地址:hashAddr = 13 % 10 =3;

但是数组中 3 位置已经有个一个数据,

所以我们把它存储到 3 位置往后的 下一个空位置中

这种解决冲突的方法称为:闭散列

而这种查询空位置的方法为:闭散列中的 线性探测法

当然,还有其他的解决冲突的方法和其他的寻找空位置的方法,

我们在此篇文章不做深究。

猜你喜欢

转载自blog.csdn.net/mowen_mowen/article/details/82943192