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


下一期再见吧。


推荐阅读
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
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社区 版权所有