理论基础 —— 查找

【概述】

查找是在具相同类型的记录构成的集合中,找出满足给定条件的记录,给定的查找条件是多样的,为便于讨论,将查找条件限制为 “匹配”,即查找关键码等于给定值的记录。

在查找中,常将数据元素称为记录,将可以标识一个记录的某个数据项称为关键码,关键码的值称为键值,若关键码可以唯一标识一个记录,则称其为主关键码,反之,称为次关键码

【查找分类】

1.静态查找

静态查找是指不涉及插入、删除操作的查找,其在查找不成功时,只返回一个不成功的标志,查找的结果不改变查找集合。

其适用于以下两种情景:

  • 查找集合一旦生成,只对其进行查找
  • 对查找集合经过一段时间查找后,集中地进行插入、删除等操作

2.动态查找

动态查找是指涉及插入、删除操作的查找,其在查找不成功时,需要将查找的记录插入到查找集合中,查找的结果可能会改变查找集合。

其适用于查找与插入、删除操作在同一阶段进行的情景。

【查找结构】

一般而言,各种数据结构都会涉及到查找操作,但在某些应用中,查找操作是最主要的操作,为提高查找效率,需要设计专门的查找结构。

常见的查找结构有:

  • 线性表:适用于静态查找,主要采用顺序查找、折半查找等
  • 树表:适用于动态查找,主要采用二叉排序树查找等
  • 散列表:静态查找、动态查找均适用,主要采用哈希查找

【查找的性能】

查找算法的基本操作通常是将记录的关键码与给定值进行比较,其运行时间主要消耗在关键码的比较上,因此应以关键码的比较次数来度量查找算法的时间性能,其时间复杂度是问题规模 n 和待查关键码在查找集合中的位置 k 的函数,记为:T(n,k)

对于查找算法,关心的是其整体性能,故将关键码的比较次数的数学期望值定义为平均查找长度(ASL)

对于查找成功的情况,有:ASL=\sum_{i=1}^np_ic_i,其中,Pi 为查找表中第 i 个记录的概率,Ci 为找到第 i 个记录所需的关键码的比较次数。

对于查找不成功的情况,平均查找长度为查找失败对应的关键码的比较次数。

【分类】

1.线性表的查找技术

1)顺序查找:点击这里

2)二分查找:点击这里

3)插值查找:点击这里

4)斐波那契查找:点击这里

2.树表的查找技术

1)二叉排序树:点击这里

2)平衡二叉树(AVL 树):点击这里

3.哈希查找:点击这里

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值