`
java_mzd
  • 浏览: 583623 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

查找表分析(总论)

阅读更多

 

  本来准备用一个文章来写关于查找表这一块的,结果发现内容实在太多了,所以现在决定分为以下三部分进行.   

          1.  查找表的概念

          2.  静态查找表

          3.  动态查找表

          4.  Hash表,以及Map

 

 

                            本文是查找表系列之一:查找表的概念

 

  定义:

     查找表:是由同一类型的数据元素(或记录)构成的集合,由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的数据结构。

 

  对查找表的操作:

  • 查询某个“特定的”数据元素是否在查找表中;
  • 检索某个“特定的”数据元素的各种属性;
  • 在查找表中插入一个数据元素;
  • 从查找表中删去某个数据元素。

   分类:

 

     按照记录在表中的位置和它的关键字之间的关系可以分为:静态查找表动态查找表Hash表。

       其中静态查找表动态查找表都是:记录在表中的位置和它的关键字之间不存在一个确定的关系。

       Hash表记录在表中的位置和它的关键字之间存在一个确定的关系。

 

       静态查找表:

              仅作查询和检索操作的查找表。

      

       动态查找表

            在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素,此类表为动态查找表。

 

       哈希表:

           根据设定的哈希函数 H(key) 和所选中的处理冲突的方法,将一组关键字映象到一个有限的、地址连续的地址集 (区间) 上,并以关键字在地址集中的“映象”作为相应记录在表中的存储位置,如此构造所得的查找表称之为“哈希表”。

 

   查找性能分析:

        无论是静态查找表还是动态查找表, 查找的过程均为给定值依次和关键字集合中各个关键字进行比较查找的效率取决于和给定值进行比较的关键字个数。不同的表示方法,其差别仅在于:关键字和给定值进行比较的顺序不同其平均查找长度始终都不可能为零。(平均查找长度ASL始终为长度n的函数)

 

    Hash表中,记录在表中位置和其关键字之间存在一种确定的关系,我们可以预先知道所查关键字在表中的位置,理想状态下ASL可以达到0,因为hash冲突等原因,哈希表的平均查找长度是 a 的函数,而不是 n 的函数。这说明,用哈希表构造查找表时,可以选择一个适当的装填因子 a ,使得平均查找长度限定在某个范围内—— 这是哈希表所特有的特点。

 

 

 

   具体查找表特征分析: 

 

      静态查找表中

         按存储结构:    可以分为顺序结构链式结构

         按元素的有序性:可以分为有序表无序表

         无序表链式表的查找方式,都需要遍历整个表进行比对,而顺序结构的有序表,可以通过折半查找算法来实现(具体算法/算法性能比较等参见静态表一节)

          分有块序表:将表分成几块,块内无序,块间有序;先确定待查记录所在块,再在块内查找。索引顺序查找:又称分块查找

 

     动态查找表

          特点:表结构本身是在查找过程中动态生成。若表中存在其关键字等于给定值key的记录,表明查找成功;否则插入关键字等于key的记录。

         动态生成二叉排序树(二叉查找树)--------平衡二叉树--------B-树B+树

        (本节主要是各种树的查找,增加,删除等操作的算法实现,放在最后实现)

 

        Hash表:

            1)   哈希(Hash)函数是一个映象,即: 将关键字的集合映射到某个地址集合上,它的设置很灵活,只要这个地址集合的大小不超出允许范围即可;

            2)  由于哈希函数是一个压缩映象,因此,在一般情况下,很容易产生冲突现象,即: key1¹ key2,而  f(key1) = f(key2)

            3).  只能尽量减少冲突而不能完全避免冲突,这是因为通常关键字集合比较大,其元素包括所有可能的关键字,而地址集合的元素仅为哈希表中的地址值

             因此,在构造这种特殊的“查找表” 时,除了需要选择一个”(尽可能少产生冲突)的哈希函数之外;还需要找到一种处理冲突 的方法。

 

          2. 哈希函数构造的方法:

 

  •  
    • 直接定址法
    • 数字分析法
    • 平方取中法
    • 折叠法
    • 除留余数法
    • 随机数法

         3. 处理冲突的方法

              处理冲突” 实际含义是:为产生冲突的关键字寻找下一个哈希地址。

          1.开放定址法

            2.再哈希法

            3.链地址法

 

 

下一节先实现Hash表,然后模仿JDK中的HashMap自己山寨一份

 

1
5
分享到:
评论

相关推荐

    新旧课标比较之中国地理总论PPT课件.pptx

    《新旧课标比较之中国地理总论》这一PPT课件,细致地对比了当前教育标准与之前版本的区别,特别是在中国地理这一学科领域。这一课件不仅为地理教师提供了一种比较工具,也帮助学生理解新旧课标在教学内容、认知要求...

    医学文献检索总论.ppt

    在医学领域,文献检索涉及到对各种类型医学文献的查找,如图书、期刊、会议录等。文献按照载体形式分为印刷型(如图书、期刊)、缩微型(如微缩胶片)和电子文献(如电子书、电子期刊)。每种载体都有其特点,如图书...

    lucene 原理与代码分析

    #### 总论 全文检索系统通过建立索引来加速文档的搜索过程,索引是预先构建的数据结构,它存储了文档的关键信息,如关键词及其在文档中的位置。当用户发出查询时,系统快速定位到相关文档并返回结果。 #### 索引...

    lucene原理与代码分析完整版

    - **跳跃表规则**:用于加速词典的查找速度。 **4. 具体格式** - **正向信息**:包括段的元数据信息、字段的元数据信息、字段的数据信息等。 - **反向信息**:包括词典信息、文档号及词频信息、词位置信息等。 ...

    Lucene_原理与代码分析完整版

    - **第三步:搜索索引** - 根据分析后的查询语句,在索引中查找匹配的文档。 - **第四步:结果排序** - 计算查询语句与每篇文档的相关度,并按照相关度对结果进行排序。 - **计算权重** - 计算每个词在文档中的重要...

    某市电子政务外网云计算数据中心可行性分析研究报告.doc

    - **主题管理**:关注不同政务主题的数据组织和管理,便于用户按需查找。 - **元数据管理**:确保数据的描述信息准确无误,方便检索和理解。 - **公共代码管理**:统一编码标准,提升数据交换的兼容性。 - **...

    Lucene 原理与代码分析完整版.pdf

    - **跳跃表规则**:使用跳跃表来快速定位数据。 **4. 具体格式** Lucene索引文件的具体格式涵盖了正向信息、反向信息和其他信息等多个方面。 - **正向信息**:包括段的元数据信息、字段元数据信息、字段数据信息等...

    lucene 原理 代码分析

    ##### 一、总论 全文检索的核心是建立一个索引(Index),该索引存储了文档中的所有关键词及其出现位置的信息。当用户发起查询时,系统会根据索引快速定位到包含关键词的文档,并根据某种评分机制返回最相关的文档...

    通用版2020高考英语二轮复习专题5短文改错5.1解题技法总论课件新人教版

    - **逐句分析,把握结构**:深入分析每个句子的语法结构,应用所学知识查找并修正错误。 - **对照答案,复读全文**:修改后,再次通读文章,确保语义连贯,语法无误,尤其注意一致性问题。 5. **实战演练**:通过...

    lucene源码分析

    - **第三步:搜索索引**:根据语法树中的信息,在索引中查找匹配的文档。 - **第四步:相关性排序**:根据查询词与文档的相关程度对结果进行排序,以提供最相关的文档给用户。 **具体步骤**: - **计算权重**:为每...

    中职-网络营销实务项目三-网络营销调研与分析.ppt

    间接调研则依赖于搜索引擎、相关网站和网上数据库来查找和收集已有信息。 网络市场调研的优势在于其高效性、实时性和覆盖面广,能迅速获取大量数据,且成本相对较低。相比于传统调查,网络调研在组织、信息采集和...

    省级矿产资源三率调查和评价设计报告书文书提纲.doc

    最后,报告书分析了当前存在的问题,如资源浪费、技术水平不足等,并提出了针对性的对策建议,强调了问题查找的准确性、分析的深度和对策的可行性。 报告书的第二篇则针对具体矿种,如煤炭,详细分析了其资源情况、...

    Lucene 原理与代码分析

    这涉及到如何分析查询语句、如何在索引中查找匹配项、如何计算每个文档的得分以及如何对结果进行排序。Lucene中的搜索组件在接收到查询请求后,会分步骤地执行这些任务,最终将处理结果返回给用户。 整体而言,...

    Lucene 原理与代码分析完整版

    ##### 总论 在全文检索系统中,主要有两大步骤:**建立索引**和**查询索引**。这两个步骤构成了全文检索系统的基石。 1. **建立索引**:这一阶段的主要任务是对文档进行分析并建立索引,以便后续查询时能快速定位...

    房地产项目可行性研究报告创作模板.docx

    房地产项目可行性研究报告是一种重要的文档,用于评估一个房地产项目的经济、技术、法律和社会可行性。...在完成所有分析和研究后,应更新目录并确保所有信息准确无误,以便于读者快速查找和理解报告内容。

    图书数据分类与实作PPT.ppt

    主题分析是理解图书内容的关键步骤,之后根据所采用的分类表(如CTCF、杜威十进制分类法或美国国会图书馆分类法)确定分类号。此外,还需要考虑著者号、年代号、册次号和部次号等,以构成完整的索书号,确保图书在...

Global site tag (gtag.js) - Google Analytics