数据结构-查找技术.ppt
《数据结构-查找技术.ppt》由会员分享,可在线阅读,更多相关《数据结构-查找技术.ppt(46页珍藏版)》请在三一办公上搜索。
1、第 7 章 查找技术,本章的主要内容是:,查找的基本概念线性表的查找技术树表的查找技术散列表的查找技术,查找的基本概念,关键码:可以标识一个记录的某个数据项。键值:关键码的值。主关键码:可以唯一地标识一个记录的关键码。次关键码:不能唯一地标识一个记录的关键码。,7.1 概述,查找的基本概念,查找:在具有相同类型的记录构成的集合中找出满足给定条件的记录。,7.1 概述,查找的结果:若在查找集合中找到了与给定值相匹配的记录,则称查找成功;否则,称查找失败。,静态查找:不涉及插入和删除操作的查找。动态查找:涉及插入和删除操作的查找。,7.1 概述,查找的基本概念,静态查找适用于:查找集合一经生成,便
2、只对其进行查找,而不进行插入和删除操作,或经过一段时间的查找之后,集中地进行插入和删除等修改操作;动态查找适用于:查找与插入和删除操作在同一个阶段进行,例如当查找成功时,要删除查找到的记录,当查找不成功时,要插入被查找的记录。,7.1 概述,查找的基本概念,查找结构:面向查找操作的数据结构,即查找基于的数据结构。,集合中元素之间不存在明显的组织规律,不便查找。,本章讨论的查找结构:线性表:适用于静态查找,主要采用顺序查找技术、折半查找技术。树表:适用于动态查找,主要采用二叉排序树的查找技术。散列表:静态查找和动态查找均适用,主要采用散列技术。,7.1 概述,查找结构:面向查找操作的数据结构,即
3、查找基于的数据结构。,查找的基本概念,查找算法的性能,查找算法时间性能通过关键码的比较次数来度量。,算法;问题规模;待查关键码在查找集合中的位置;查找频率。,7.1 概述,查找频率与算法无关,取决于具体应用。通常假设pi是已知的。,查找算法的性能,查找算法时间性能通过关键码的比较次数来度量。,查找算法的时间复杂度是问题规模n和待查关键码在查找集合中的位置k的函数,记为T(n,k)。,7.1 概述,平均查找长度:将查找算法进行的关键码的比较次数的数学期望值定义为平均查找长度。计算公式为:,其中:n:问题规模,查找集合中的记录个数;pi:查找第i个记录的概率;ci:查找第i个记录所需的关键码的比较
4、次数。,结论:ci取决于算法;pi与算法无关,取决于具体应用。如果pi是已知的,则平均查找长度只是问题规模的函数。,7.1 概述,查找算法的性能,顺序查找(线性查找),基本思想:从线性表的一端向另一端逐个将关键码与给定值进行比较,若相等,则查找成功,给出该记录在表中的位置;若整个表检测完仍未找到与给定值相等的关键码,则查找失败,给出失败信息。,10 15 24 6 12 35 40 98 55,0 1 2 3 4 5 6 7 8 9,7.2 线性表的查找技术,例:查找k35,顺序查找(线性查找),7.2 线性表的查找技术,int SeqSearch1(int r,int n,int k)/数组
5、r1 rn存放查找集合 i=n;while(i0,基本思想:设置“哨兵”。哨兵就是待查值,将它放在查找方向的尽头处,免去了在查找过程中每一次比较后都要判断查找位置是否越界,从而提高查找速度。,7.2 线性表的查找技术,改进的顺序查找,10 15 24 6 12 35 40 98 55,0 1 2 3 4 5 6 7 8 9,例:查找k35,哨兵,35,基本思想:设置“哨兵”。哨兵就是待查值,将它放在查找方向的尽头处,免去了在查找过程中每一次比较后都要判断查找位置是否越界,从而提高查找速度。,7.2 线性表的查找技术,改进的顺序查找,10 15 24 6 12 35 40 98 55,0 1 2
6、 3 4 5 6 7 8 9,例:查找k25,25,int SeqSearch2(int r,int n,int k)/数组r1 rn存放查找集合 r0=k;i=n;while(ri!=k)i-;return i;,7.2 线性表的查找技术,改进的顺序查找,平均查找长度较大,特别是当待查找集合中元素较多时,查找效率较低。,7.2 线性表的查找技术,顺序查找的缺点:,算法简单而且使用面广。对表中记录的存储没有任何要求,顺序存储和链接存储均可;对表中记录的有序性也没有要求,无论记录是否按关键码有序均可。,顺序查找的优点:,折半查找,使用条件:线性表中的记录必须按关键码有序;必须采用顺序存储。,基本
7、思想:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键码相等,则查找成功;若给定值小于中间记录的关键码,则在中间记录的左半区继续查找;若给定值大于中间记录的关键码,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所查找的区域无记录,查找失败。,7.2 线性表的查找技术,折半查找的基本思想,7.2 线性表的查找技术,例:查找值为14的记录的过程:,0 1 2 3 4 5 6 7 8 9 10 11 12 13,7 14 18 21 23 29 31 35 38 42 46 49 52,3114,1814,714,14=14,7.2 线性表的查找技术,例:查找值为22的
8、记录的过程:,0 1 2 3 4 5 6 7 8 9 10 11 12 13,7 14 18 21 23 29 31 35 38 42 46 49 52,3122,1822,2322,2122,7.2 线性表的查找技术,lowhigh,int BinSearch1(int r,int n,int k)/数组r1 rn存放查找集合 low=1;high=n;while(lowrmid)low=mid+1;else return mid;return 0;,7.2 线性表的查找技术,折半查找非递归算法,int BinSearch2(int r,int low,int high,int k)/数组r
9、1 rn存放查找集合 if(lowhigh)return 0;else mid=(low+high)/2;if(krmid)return BinSearch2(r,mid+1,high,k);else return mid;,7.2 线性表的查找技术,折半查找递归算法,折半查找判定树,判定树:折半查找的过程可以用二叉树来描述,树中的每个结点对应有序表中的一个记录,结点的值为该记录在表中的位置。通常称这个描述折半查找过程的二叉树为折半查找判定树,简称判定树。,7.2 线性表的查找技术,当n=0时,折半查找判定树为空;当n0时,折半查找判定树的根结点是有序表中序号为mid=(n+1)/2的记录,根
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 查找 技术
链接地址:https://www.31ppt.com/p-6578841.html