数据结构与算法HashTable(转)

Posted jialinliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法HashTable(转)相关的知识,希望对你有一定的参考价值。

1、什么是哈希表?

哈希表(HashTable)又叫做散列表,是根据关键码值(即键值对)而直接访问的数据结构。也就是说,它通过把关键码映射到表中一个位置来访问记录,以加快查找速度。这个映射函数就叫做散列(哈希)函数,存放记录的数组叫做散列表。

2、为什么哈希表的速度快?

在数据结构中,我们对两种数据结构应该会非常熟悉:数组与链表。数组的特点就是查找容易,插入删除困难;而链表的特点就是查找困难,但是插入删除容易。既然两者各有优缺点,那么我们就将两者的有点结合起来,让它查找容易,插入删除也会快起来。哈希表就是讲两者结合起来的产物。

3、哈希如何查找?

哈希的查找就是下面两个步骤:
<1>使用哈希函数将被查找的键转化为数组的索引。在理想的状态下,不同的键会被转化成不同的索引值。但是那是理想状态,我们实践当中是不可能一直是理想状态的。当不同的键生成了相同的索引的时候,也就是我们所说的冲突,我们这个时候就要处理冲突。
<2> 处理冲突的方法很多,后面我们介绍拉链法和线性探索法。
哈希表是一个时间和空间上平衡的例子。如果没有空间的限制,我们可以直接用键来作为数组的索引,这样可以将查找时间做到最快(O(1))。如果没有时间的限制,我们可以使用无序链表进行顺序查找,这样只需要很少的内存。

4、什么是哈希函数?

哈希函数其实就是我们常说的哈希算法,主要应用在以下这几个方面:文件校验、数字签名、鉴权协议。常用的哈希算法有以下这些。
<1>MD5:MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。MD5是输入不定长度信息,输出固定长度128bits的算法。
<2>SHA-1:常用于HTTPS传输和软件签名。
<3>SHA-2:SHA-224/SHA-256/SHA-384/SHA-512并成为SHA-2
<4>SHA-3:之前名为Keccak算法,是一个加密杂凑算法。

————————————————
版权声明:本文为CSDN博主「走出去拍拍照」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/iva_brother/java/article/details/82253989

 

以上是关于数据结构与算法HashTable(转)的主要内容,如果未能解决你的问题,请参考以下文章

PHP HashTable介绍总结

python 学习笔记 -- 数据结构与算法 哈希表 Implementation of a Hash Table

8 数据结构与算法

数据结构和算法哈希表 HashTable

寒假 6(计划更改)

(转)HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别