热门标签 | 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 /


下一期再见吧。


推荐阅读
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • Java学习第10天:深入理解Map接口及其应用 ... [详细]
  • 在日常的项目开发中,测试环境和生产环境通常采用HTTP协议访问服务。然而,从浏览器的角度来看,这种访问方式会被标记为不安全。为了提升安全性,当前大多数生产环境已经转向了HTTPS协议。本文将详细介绍如何在Spring Boot应用中配置SSL证书,以实现HTTPS安全访问。通过这一过程,不仅可以增强数据传输的安全性,还能提高用户对系统的信任度。 ... [详细]
  • 本文探讨了 Java 中 Pair 类的历史与现状。虽然 Java 标准库中没有内置的 Pair 类,但社区和第三方库提供了多种实现方式,如 Apache Commons 的 Pair 类和 JavaFX 的 javafx.util.Pair 类。这些实现为需要处理成对数据的开发者提供了便利。此外,文章还讨论了为何标准库未包含 Pair 类的原因,以及在现代 Java 开发中使用 Pair 类的最佳实践。 ... [详细]
  • 深入解析 Golang 中 Context 的功能与应用
    本文详细探讨了 Golang 中 Context 的核心功能及其应用场景,通过深入解析其工作机制,帮助读者更好地理解和运用这一重要特性,对于提升代码质量和项目开发效率具有重要的参考价值。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • PHP网站日志深度解析与数据洞察分析
    通过对PHP网站日志进行深入解析与数据洞察分析,可以有效提升网站性能和用户体验。由于网站日志数据量庞大,通常需要借助专业的日志分析工具来处理。常用的工具包括光年日志分析工具和WebLog Expert等,这些工具能够帮助技术人员快速识别并解决网站运行中的各种问题,从而优化SEO效果和提升整体运营效率。 ... [详细]
  • 如何在PHP中正确配置错误显示功能
    在PHP中正确配置错误显示功能的方法如下:首先,定位并打开“php.ini”配置文件;接着,将“display_errors”参数设置为“On”;最后,在PHP代码文件的顶部添加 `ini_set('display_errors', '1');` 以确保错误信息能够被正确显示。此外,建议在开发环境中启用此功能,而在生产环境中禁用,以避免敏感信息泄露。 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 本文探讨了Android系统中支持的图像格式及其在不同版本中的兼容性问题,重点涵盖了存储、HTTP传输、相机功能以及SparseArray的应用。文章详细分析了从Android 10 (API 29) 到Android 11 的存储规范变化,并讨论了这些变化对图像处理的影响。此外,还介绍了如何通过系统升级和代码优化来解决版本兼容性问题,以确保应用程序在不同Android版本中稳定运行。 ... [详细]
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社区 版权所有