理论基础 —— 查找
【概述】
查找是在具相同类型的记录构成的集合中,找出满足给定条件的记录,给定的查找条件是多样的,为便于讨论,将查找条件限制为 “匹配”,即查找关键码等于给定值的记录。
在查找中,常将数据元素称为记录,将可以标识一个记录的某个数据项称为关键码,关键码的值称为键值,若关键码可以唯一标识一个记录,则称其为主关键码,反之,称为次关键码。
【查找分类】
1.静态查找
静态查找是指不涉及插入、删除操作的查找,其在查找不成功时,只返回一个不成功的标志,查找的结果不改变查找集合。
其适用于以下两种情景:
- 查找集合一旦生成,只对其进行查找
- 对查找集合经过一段时间查找后,集中地进行插入、删除等操作
2.动态查找
动态查找是指涉及插入、删除操作的查找,其在查找不成功时,需要将查找的记录插入到查找集合中,查找的结果可能会改变查找集合。
其适用于查找与插入、删除操作在同一阶段进行的情景。
【查找结构】
一般而言,各种数据结构都会涉及到查找操作,但在某些应用中,查找操作是最主要的操作,为提高查找效率,需要设计专门的查找结构。
常见的查找结构有:
- 线性表:适用于静态查找,主要采用顺序查找、折半查找等
- 树表:适用于动态查找,主要采用二叉排序树查找等
- 散列表:静态查找、动态查找均适用,主要采用哈希查找
【查找的性能】
查找算法的基本操作通常是将记录的关键码与给定值进行比较,其运行时间主要消耗在关键码的比较上,因此应以关键码的比较次数来度量查找算法的时间性能,其时间复杂度是问题规模 n 和待查关键码在查找集合中的位置 k 的函数,记为:T(n,k)
对于查找算法,关心的是其整体性能,故将关键码的比较次数的数学期望值定义为平均查找长度(ASL)。
对于查找成功的情况,有:,其中,Pi 为查找表中第 i 个记录的概率,Ci 为找到第 i 个记录所需的关键码的比较次数。
对于查找不成功的情况,平均查找长度为查找失败对应的关键码的比较次数。
【分类】
1.线性表的查找技术
1)顺序查找:点击这里
2)二分查找:点击这里
3)插值查找:点击这里
4)斐波那契查找:点击这里
2.树表的查找技术
1)二叉排序树:点击这里
2)平衡二叉树(AVL 树):点击这里
3.哈希查找:点击这里
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南