数据结构与算法:查找

本文详细介绍了查找(Search)的概念,包括数据表、关键字、查找、静态与动态查找表及其效率。重点讨论了顺序表、折半查找、散列表查找,特别是散列函数的设计与冲突处理,如直接定址法、除留余数法等。还探讨了处理溢出的闭散列方法,如链地址法和开放地址法,并提到了HashSet的自动扩张与装载因子的影响。
摘要由CSDN通过智能技术生成

所谓查找(Search)又称检索,就是在一个数据元素集合中寻找满足某种条件的数据元素。查找在计算机数据处理中是经常使用的操作。查找算法的效率高低直接关系到应用系统的性能。查找的方法很多,本章将介绍一些常用的查找算法,主要有:线性表的查找、树表的查找和散列表的查找,并对有关的算法进行性能分析和对比

基本概念

1.数据表

就是指数据元素的有限集合。例如,为统计职工工作业绩,建立一个包括:职工编号、职工姓名、业绩等信息的表格。这个表格中的每一个职工的信息就是一个数据元素。对此表格可以根据职工编号查找职工的业绩等信息;也可以根据职工的姓名查找职工的业绩等信息。

2.关键字

数据表中数据元素一般有多个属性域(字段),即由多个数据成员组成,其中有一个属性域可用来区分元素,作为查找或排序的依据,该域即为关键字。每个数据表用哪个属性域作为关键字,要视具体的应用需要而定。即使是同一个表,在解决不同问题的场合也可能取不同的域做关键字。如果在数据表中各个元素的关键字互不相同,这种关键字即主关键字。

3.查找

查找(Search)是数据处理中最常用的一种运算。最常见的一种方式是事先给定一个值,在数据表中找到其关键字等于给定值的数据元素。查找的结果通常有两种可能:一种可能是查找成功,即找到关键字等于给定值的数据元素,这时作为查找结果,可报告该数据元素在数据表中的位置,还可进一步给出该数据元素的具体信息,后者在数据库技术中叫做检索;另一种可能是查找不成功(查找失败),即数据表中找不到其关键字等于给定值的数据元素,此时查找的结果可给出一个“空”记录或“空”指针。

4.静态查找表和动态查找表

数据表的组织有两种不同方式。其一,数据表的结构固定不变,当查找失败时,作为查找结果只报告一些信息,如失败标志、失败位置等,这类数据表称为静态查找表;其二,数据表的结构在插入或删除数据元素过程中会得到调整,当查找失败时,则把给定值的数据元素插入到数据表中,这类组织方式称为动态查找表。相比较而言,静态查找表的结构较为简单,操作较为方便,但查找的效率较低,而且需要考虑表的溢出问题。

5.查找的效率

查找是经常使用的一种运算,因此,查找的时间复杂度是人们关心的一个重要因素。查找的时间复杂度一般用平均查找长度(ASL)来衡量。平均查找长度是指在数据表中查找各数据元素所需进行的关键字比较次数的期望值,其数学定义为:

ASL=m=0nPiCi A S L = ∑ m = 0 n P i ⋅ C i

其中, Pi P i

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值