入门级:从哈希算法到数据库索引

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u013251692/article/details/78105242

哈希算法并不是一个特定的算法而是一类算法的统称。哈希算法也叫散列算法,得到的哈希值也叫散列值,一般来说满足这样的关系:f(data)=key,输入任意长度的data数据,经过哈希算法处理后输出一个定长的数据key,即哈希值是固定长度的,同时这个过程是不可逆的,无法由key逆推出data。

如果是一个data数据集,把data中的数据一一进行哈希算法处理后得到key的数据集与data数据集相对应,这种data-key相对应组成的表就成了哈希表

我们可以想象一个夸张的场景来说明为什么要用哈希表,假设我们现在有上万个1g大小的文件,现在我们得到一个新文件需要存储,但我们需要判断这个文件是否包含在之前已有的文件中,当进行文件是否相同的比较判断时,比较1g大小是不是很慢,如果我们使用哈希算法,让其成为几个字节很小的哈希值进行比较判断是不是相对来说快很多.因此我们使用哈希算法,将之前的上万的文件进行哈希计算f(data)=key,让每个文件得到一个哈希值,集合起来得到哈希表,现在我们把现在要对比的文件进行哈希计算得到哈希值,然后查询哈希表,就会快很多.

哈希冲突: 既然输入数据不定长,而输出的哈希值却是固定长度的,那么当我们进行多次哈希计算时会有一定概率会出现相同的哈希值出现(因为哈希值定长,那么哈希值是有最大值的,假设哈希值最大为10000,那么只可以一一映射10000个值),那么有相同的哈希值出现就是哈希冲突了.
未完待续……..

猜你喜欢

转载自blog.csdn.net/u013251692/article/details/78105242