理论基础 —— 查找

【概述】

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

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

【查找分类】

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.哈希查找:点击这里

 

 

 

posted @   老程序员111  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示