热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据结构哈希表的创建,哈希表比较次数

2、散列表是如何实现查找的?上面提到的某个函数,被称为散列函数,它负责记录存储位置和它的关键字之间的对应关系f。保证存储空间的有效利用,并减少为处理冲突而耗费的时间。冲突就是,


要详细介绍哈希表系列的概要,共有三篇文章1、哈希表


2、哈希函数的作用和结构


3、哈希表搜索的代码实现


文章目录散失清单系列共有三个报道正文篇的要点是散失清单概要1、散失清单是什么? 2、哈希表是怎么实现搜索的? 3、哈希表搜索步骤4、好哈希函数两个原则: 5、冲突是什么? 6、总结


因为哈希表的内容太多了,所以我打算分三篇文章说解散名单。


本篇的重点是散列表的概要1、散列表是什么?散列表(又称仁爱的荔枝表(Hash table))使用散列技术将记录存储在连续的存储空间中。


哈希表使用某个函数f,使其为存储位置 = f(关键字)。 这样,无需比较关键字就可以得到所需记录的存储位置。


哈希技术记录之间没有逻辑关系,只与关键字相关。 因此,散列主要是面向查找的存储结构


2、哈希表是怎么实现搜索的? 上述函数称为散列函数,记录存储位置及其关键字之间的对应关系f


散列函数,又称为仁爱的荔枝(Hash)函数


所记录的存储位置与其关键字的对应关系f被称为散列函数散列技术,是一种新的存储技术散列技术。 在记录的存储位置和该关键字之间,各关键字key位于存储位置f(key )查找时:


如果该记录存在于发现集合中,则基于该决定的对应关系来找到规定的值key的映射f[key]一定位于f[key]的位置。key 为关键字,f 为散列函数,f(key)为存储位置


3、散列表搜索步骤在存储时,通过散列函数计算纪录的散列地址,并按此散列地址存储该记录。


请想象一个场景。 你想寄快递。 快递的哥哥给我贴了快递的订单号码,让我放在了驿站里的桌子上。


但是,一进车站,就有很多桌子。 你不知道他在说什么。


这个时候,有人来问你要不要寄快递。 然后,我问你有没有贴快递的订单号码。 你给他订单号后,他帮你放在指定的桌子上。


这就是哈希表的保存过程。快递单号就是关键字,驿站里的那个人就是散列函数,而快递放到的桌子就是最终得出的指定地址。


当查找记录时,我们通过同样的散列函数计算记录的散列地址,按此散列地址访问该记录。


果然是那一幕,但这个时候的你不是来快递的,而是来拿挚友送的麻辣鸭翅的。


你直接进入了那个放置快递的车站,给了那个人快递的号码。 那个人用你的快递号码找到了你的快递,拿来给你了。


的步骤与存储步骤相同,只是使用的用途不同。我们都是将关键字给予散列函数,通过散列函数计算得出的存储位置来存储 / 查找。


更简单地说,散列函数所起的作用是通过计算得到东西存哪去,从哪拿?


4、好散列函数的两个原则:1、计算简单


散列函数的计算时间不能超过与其他搜索技术比较关键字的时间。


2、散列地址分布均匀


解决冲突的最佳方法是将哈希地址均匀地尽量分布在存储空间中。


确保有效利用存储空间,减少处理冲突所需的时间。


5、冲突是什么? 在上面提出的原则中,有一个新词叫做“冲突”。 什么是冲突?


冲突是指两个不同的关键字,但通过散列函数得到的地址是一样的


key1 key2,但f(key1)=f (key2)


同义词


此时的key1和key2被称为该散列函数的同义词


那可不行啊。 单人房怎么能两个人住?


请不要担心。 这个问题当然由神通广大的xsdwbl解决了。


我的下一篇文章慢慢来~


6、总结最后总结哈希表的优缺点。


散列技术最适合的求解问题是查找与给定值相等的记录:


优点:简化比较过程、提高搜索效率的缺点:在没有很多常规数据结构的情况下,不能用单个关键字记录多个记录的不正确的范围搜索是本文的全部内容。 如果您认为可以为您服务,请访问3358 www.Sina.com/http://www.Sina.com /


下一期再见吧。


推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
author-avatar
哈喽随风amy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有