哈希表

作者: Queen_BJ | 来源:发表于2020-03-05 18:27 被阅读0次

数据结构之一 :哈希表(或称散列表)
哈希表是数组支持按照下标随机访问数据的特性(数组的一种扩展)
哈希表存储以键值形式
为什么使用哈希表?
当查找是线性查找的时候,从头开始查询直到找到要查找的值,但是如果数据太多,还耗时,所以可用哈希表存储

eg:


问题 :想查找Alyy的性别,如何查找?

一、先线性查找


屏幕快照 2020-03-05 下午6.26.37.png

所以使用哈希表解决这个问题,这次准备5个箱子的数组来存储数据

二、哈希表

把Joe存储进去没使用哈希函数计算Joe的哈希值,比如得到结果是4928 ,将哈希值除以数组的长度,求余,这个叫mod运算


屏幕快照 2020-03-05 下午5.50.34.png

因此将数据存储进数组的3号箱子,重复前面操作存进数组



遇到这钟情况,可使用链表在已有数据的后面继续存储新的数据(链表法)

总结:

哈希冲突
在哈希表中,我们可以利用哈希函数快捷访问到数组中的目标数据。如果发生哈希冲突,就使用链表进行存储,这样不管数据多少,可以灵活应对。

如果数组空间太小,使用哈希表时候容易发生冲突,线性查找的使用频率也会高;反之,如果数组空间太大,会出现空箱子,造成内存浪费,因此设定合适的空间非常重要

在存储数据过程中,如果发生冲突,可以利用链表在已有数据的后面插入新数据解决冲突,这种方法成为链表法(或是链地址法)

相关文章

  • Java数据结构_哈希表_基本概念

    本文目标 哈希表的基本概念,哈希冲突,哈希函数 什么是哈希表 哈希表也叫做散列表(hash有剁碎的意思)哈希表是空...

  • redis数据结构--字典

    Redis的字典底层就是哈希表。 哈希表 首先给出哈希表的定义: 其中可以看到,table是一个哈希表节点的数组,...

  • 哈希表和链表

    优秀文章:Chapter: 散列表(哈希表) 一、哈希表 哈希表hashtable(key,value) 就是把K...

  • 算法-哈希表算法总结

    1 哈希表模拟 思路:通过设计哈希表,模拟O(1)时间复杂度的哈希表。 2 数组作为哈希表 思路:数组就是简单的哈...

  • 数据结构 -- 哈希表及其应用

    这篇主要用来记录一下学习到的关于哈希表的知识点。 文章结构 哈希表 哈希表的定义 哈希表的优缺点 哈希碰撞 负载因...

  • 数据结构与算法(第一季):哈希表(Hash Table)

    一、哈希表(Hash Table) 1、概念 哈希表也叫做散列表。 哈希表的原理: 利用哈希函数生成key对应的i...

  • 深入理解哈希表

    深入理解哈希表 深入理解哈希表

  • 2019 算法面试相关(leetcode)--哈希表

    哈希表相关的原理可以参考下:浅谈哈希表(HashTable)深入理解哈希表哈希表的理解理解HashSet及使用 哈...

  • Redis中的字典

    Redis中的字典 Redis中的字典使用哈希表作为底层实现,一个哈希表中可以有多个哈希表结点,而每个哈希表结点保...

  • Redis数据结构与对象——哈希

    1 字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表可以有多个哈希表节点,即每个哈希表节点就保存了字...

网友评论

      本文标题:哈希表

      本文链接:https://www.haomeiwen.com/subject/puwqrhtx.html