是什么?
- 哈希表是一种根据输入信息在已有数据库中快速查找匹配对于信息的算法。
为什么需要?
- 具体应用场景是,比如在图书管理系统中,用户输入一个图书名称,程序需要在整个图书数据库中找到对应的书籍。如果这个数据库是一个数组的话,那么我们会从0开始遍历数组,直到找到对应的书籍,记录下这个位置的号码并读取信息。这样从头开始遍历整个数组的算法,最大的弊病就在于当数据量过大时,需要耗费的时间将是很不乐观的。当然我们可以通过使用二叉树或是更好的数据结构来存储数据,但这并不是这个算法所要解决的重点问题,先按下不表。
怎么做?
- 哈希表其实就是一个中对标遍历的查找匹配算法
- 具体做法是,用户输入一个图书名称,这个图书名称首先经过一个哈希函数,我们先不管这个函数内部代码怎么实现,只需要知道该函数的形参是图书名称,而返回值,则是一个数字。且该函数有以下两个特点:一是一个图书名称进去只能有一个相同的返回值;二是一个返回值永远只能对应一个图书名称。也就是说,图书的名称和它的数字是一一对应的。
- 那么有了上述得到数字返回值的算法,我们就能够做这样的一件事:将对应图书名称的书籍信息存储到对应的数组固定的位置,这就构成了一个哈希表。当我们需要查找某本图书时,就不用再遍历整个数组,而是直接通过哈希函数获得对应图书在数组中的位置并直接读取该位置的数据。
具体怎么做?
- 通过上述的描述,我们知道,这个算法的重点就在于求出那个独一无二的数字来作为每个数据的存储地址。而如何高效且严格地获得这个地址,就是哈希算法需要解决的问题。
- 具体怎么实现哈希函数,是没有固定答案的,但是有许多经典的开源算法可以给我们学习,比如:SHA-256、MD5