欢迎您访问无忧自考网!

数据结构中的哈希表(数据结构哈希表设计)

更新时间:2023-01-18 22:09:21作者:51data

哈希表:哈希存储结构。哈希存储的基本思想是建立键码字与其存储位置的对应关系,或者说数据的存储地址是由键码的值决定的。这样不用比较,就可以在一次访问中得到被搜索元素的搜索方法的优点:搜索速度极快(O(1)),搜索效率与元素个数n无关,哈希表存储的是由键和值组成的数据。例如,我们将每个人的性别存储为数据,键作为人名,值作为对应的性别。

为了与哈希表进行比较,我们首先将这些数据存储在一个数组中。

这里,准备了六个盒子,即长度为6的数组来存储数据。假设我们需要查询Ally的性别。由于我们不知道Ally的数据存放在哪个盒子里,所以只能从头说起查询。这种操作称为线性搜索。

数据结构中的哈希表(数据结构哈希表设计)

存储在盒子0中的密钥是乔而不是盟友。

盒子1也不是盟友。

同样,在方框2和方框3中,它也不是盟友。

当我们找到4号盒子时,我们发现数据的关键是Ally。当我们取出键的对应值时,我们知道Ally的性别是女(F)。数据越多,线性搜索代价越长时间。可以看出,查询的数据比较费时,这里尝试数据存储数据是不合适的。

为了解决这个问题,我们可以使用哈希表来解决这个问题。首先,准备数据。这一次,我们使用五个数据盒来存储数据。

我们试图让乔。

使用哈希函数计算Joed的键,即字符串“Joe”的哈希值。结果是4928。

将得到的哈希值除以数组5的长度,求余数。这种余数运算称为“模”运算。这里mod运算的结果是3。

因此,我们将Joe的数据保存到数组的Box 3中,重复前面的操作,并将其他数据也保存到数组中。

Sue key的哈希值是7291,MOD 5的结果是1。将Sue的数据保存到方框1中。

Dne key的哈希值是1539,MOD 5的结果是4。将Dne数据存储在方框4中。

Nell key的哈希值是6276,mod 5的结果是1。它应该存储在数组的box 1中,但是Sue的数据已经存储在box 1中。这种存储位置重复称为“冲突”。

在这种情况下,链表可以用来存储现有数据之后的新数据。

Ally key的哈希值是9143,mod 5的结果是3。它本应该存储在数组的box 3中,而Joe的数据已经可用了,所以用链表来存储后面Ally的数据。

Bob的key的哈希值是5278,mod 5的结果是3。本来应该存储在数组盒子3中,但是盒子3中已经有Joe和Ally的数据了,所以使用链表,Bob的数据继续存储在Ally的后面。这样存储所有数据,哈希表就完成了。

接下来我们来解释一下数据查询方法。假设我们想要查询丹的性别。

为了知道Dan存放在哪个盒子里,我们需要先计算Dan的哈希值,然后对其进行mod运算。最终结果是4,所以我们知道它存储在box 4中。

看方框4,可以知道里面的数据的key和Dan一致,所以拿出相应的值。所以我们知道丹的性别是男(男)

所以,我要怎么做查询Ally的性别?为了找到它的位置,首先要计算Ally key的哈希值,然后对其进行mod运算,最后得到3的结果。但是,框3中的数据键是Joe而不是Ally。此时,我们需要对Joe的链表进行线性搜索。

于是我们找到了有key Ally的数据,取出了它对应的值,知道Ally是女的(F)。

在哈希表中,我们可以使用哈希函数来快速访问目标数组。如果存在哈希冲突,则使用链表进行存储。这样无论是什么数据,都可以灵活应对。如果数组的空间太小,在使用哈希表时,容易发生冲突,线性查找的频率也会更高。反之,如果数组的空间太大,就会出现很多空盒子,造成内存的浪费。因此,为数组设置合适的空间非常重要。注意:在存储数据的过程中,如果出现冲突,可以使用链表在已有数据之后插入新数据来解决冲突。这种方法称为“链地址法”。除了链地址法,还有几种解决冲突的方法,其中“开发地址法”被广泛使用。这种方法意味着当冲突发生时,会立即计算互补地址(数组上的位置),并将数据存储在其中。如果仍然有冲突,计算下一个补充后的地址,直到有可用的地址。补码后地址可以通过多重散列函数或线性检测方法来计算。推荐文章:

数据结构:链表《概念》数据结构:链表《单链表》数据结构:链表《双链表》数据结构:哈希表《概念》数据结构:哈希表

为您推荐

华东师范开放教育学院登录入口官网(华东师范开放大学)

君主制何以兴、何以衰?一项政权类型兴衰的实证研究摘要:君主制是前现代的主要统治形式,并在少数几个国家持续存在。本文其兴衰提出统一的理论解释。具体来说,我们认为君主制为社会规模庞大、公民彼此孤立并因此难以协调的原始秩序问题提供了一种有效的解决

2023-01-18 22:06

建筑设计和结构设计(建筑结构设计中的概念设计是什么)

概念设计的内容十分丰富,应用面也非常广泛,几乎蕴含了所有的结构设计过程。我们通常谈到的安全度的概念、力学的概念、材料的概念、荷载的概念、地震的概念、使用的概念等都属于结构的概念。概念设计就是融合这些概念,贯穿到结构造型、方案设计、结构布置、

2023-01-18 22:05

CRM系统:客户关系管理的正确选择

CRM:客户关系管理的正确选择客户关系管理:正确的选择超过 91%的公司 今天是使用 客户关系管理软件 ,无论是作为替换或补充其现有方案。 这当然是不令人惊讶。 令人印象深刻的投资回报率和增加生产力,使 客户关系管理软件 的一个很好的选择中

2023-01-18 22:02

如何用crm系统进行有效的潜在客户管理(crm系统怎样帮助企业进行客户关系管理研究)

有交易就有客户管理,企业与客户维持良好的关系是企业可持续发展的动力。如今市场竞争激烈,同质化竞争加剧,企业出现由原来的“等”客户到现在的“抢”客户的现象。谁能抓住更多的客户谁就占据更大的市场份额。CRM系统以客户为中心,利用计算机技术、信息

2023-01-18 22:00

crm系统怎么开发(crm系统平台搭建方案)

编辑导读:通过客户分级,针对不同价值的客户分配管理运营成本,提供有差异的精细化的客户策略,达到企业资源的充分利用及获取最大利益。本文作者阐述了客户价值评价模型,并依据此模型,构建客户金字塔 ,将客户细分以达到提高客户价值最大化的目的。一、客

2023-01-18 22:00

论客户关系管理中的客户满意与客户忠诚(crm客户关系管理ppt)

客户关系管理CRM1. 客户关系管理的实施实施客户关系管理的基本步骤1.1.1. 确定业务计划1.1.2. 建立客户关系管理项目团队1.1.3. 分析客户需求,开展信息系统初建1.1.4. 明确企业应用需求1.1.5. 为客户关系管理不同级

2023-01-18 21:57

加载中...