概要
哈希表是基础的也是重要的数据结构之一,小伙伴在面试和笔试中常常被Cue到,因此学习和掌握哈希表的原理以及使用尤为重要!接下来我们带着两个问题,哈希表的原理是什么?以及,哈希表是做什么的?对哈希表有一个基本认知。
正在学习数据结构和算法的小伙伴,可以参考我其他关于数据结构和算法相关的博文,我会努力和持续更新优质的文章供大家一起学习和讨论!
更多优质内容:看这看这…数据结构和算法相关文章
特点
Hash表即散列表,其最突出的优点是查找和插入删除具有常数时间的复杂度
原理
原理是把Key通过一个固定的算法函数即所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。
而当使用哈希表进行查询的时候,就是再次使用哈希函数将key转换为对应的数组下标,并定位到该空间获取value,如此一来,就可以充分利用到数组的定位性能进行数据定位。
优点
哈希表最大的优点 就是把数据的存储和查找消耗的时间大大降低,几平可以看成是常数时间。而代价仅仅是消耗比较多的内存,然而在当前可利用
内存越来越多的情况下,用空间换时间的做法是值得的。
另外,编码比较容易也,是它的特点之一。哈希表又叫做散列表,分为“开散列”和“闭散列”。我们使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,干是用这个数组单元来存储这个元素:也可以简单的理解为,按照关键字为每一个元素“分类”,然后将这个元素存储在相应“类”所对应的地方。
冲突
但是,不能够保证每个元素的关键字与函数是一一对应的,因此极有可能出现不同的元素,却计算出了相同的函数值,这样就产生了“冲空”换句话说,就是把不同的元素分在了相同的“类”之中。后面我们将看到一种解决“冲突”的简便做法。总的来说,“直接定址”与“解决冲突”是哈希表的两大特点。
最后
看到这里,相信同学们对与哈希表以及有一定的概念!看看接下来的文章,相信对同学们学习hash table更有帮助哦!