数据结构查找精品文稿.ppt
《数据结构查找精品文稿.ppt》由会员分享,可在线阅读,更多相关《数据结构查找精品文稿.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构课件查找第1页,本讲稿共40页 查找中用到如下的基本概念。例如查找中用到如下的基本概念。例如查找中用到如下的基本概念。例如查找中用到如下的基本概念。例如8.1查找基本的概念查找基本的概念2列表列表列表列表关键字关键字关键字关键字查找查找查找查找平均查找长度平均查找长度平均查找长度平均查找长度基本查找方法基本查找方法基本查找方法基本查找方法第2页,本讲稿共40页姓名姓名姓名姓名学号学号学号学号性别性别性别性别年龄年龄年龄年龄班级班级班级班级健康健康健康健康黄佳黄佳黄佳黄佳98319831男男男男1818计计计计9898良好良好良好良好钱昌钱昌钱昌钱昌98329832女女女女1717计计计
2、计9898一般一般一般一般王羽王羽王羽王羽98339833男男男男1919计计计计9898近视近视近视近视高甜高甜高甜高甜98349834女女女女1818计计计计9898一般一般一般一般列表:列表:由同一类型的数据元素(或记录)构成的集合。由同一类型的数据元素(或记录)构成的集合。关键字:关键字:数据元素的某个数据项的值,用它可标识列表中的一个数据元素的某个数据项的值,用它可标识列表中的一个或一组数据元素或一组数据元素查找查找:根据给定的关键字值,在列表中确定一个其关键字与给定值相:根据给定的关键字值,在列表中确定一个其关键字与给定值相同的数据元素,并返回该数据元素在列表中的位置。同的数据元素
3、,并返回该数据元素在列表中的位置。第3页,本讲稿共40页平均查找长度平均查找长度定义:为确定数据元素在列表中的位置,需和给定关键值进行比定义:为确定数据元素在列表中的位置,需和给定关键值进行比较的关键值个数的期望值,称为查找算法在查找成功时的较的关键值个数的期望值,称为查找算法在查找成功时的平均查平均查找长度找长度P Pi i是查找第是查找第i i个元素概率,个元素概率,C Ci i是为找到第是为找到第i i个元素进行的比较次数个元素进行的比较次数第4页,本讲稿共40页顺序查找法顺序查找法5折半查找折半查找分块查找法分块查找法8.2基于线性表的查找法基于线性表的查找法第5页,本讲稿共40页8.
4、2.1 顺序查找法顺序查找法1 1、数据类型的定义、数据类型的定义#define LiST_SIZE 20Typedef struct KeyType key;OtherType other_data;RecordType;Typedef struct RecordType rLIST_SIZE+1;/r0为工作单元为工作单元 int length;RecordList第6页,本讲稿共40页2 2、顺序查找法、顺序查找法设置监视哨设置监视哨int SeqSearch(RecordList l,KeyType k)/在顺序表l中顺序查找关键字等于k的元素,若找到,则函数值为该元素在表中的位置,否
5、则为0.l.r0.key=k;i=l.length;while(l.ri.key!=k)i-;return(i);不设监视哨不设监视哨 int SeqSearch(RecordList l,KeyType k)/不用监视哨,在顺序表中查找关键字等于不用监视哨,在顺序表中查找关键字等于k的元的元素素 i=l.length;while(i=1&l.ri.key!=k)i-;if(i1)return(i);else return(0);第7页,本讲稿共40页3、性能分析、性能分析 假设列表长度为假设列表长度为n,那么查找第,那么查找第i个数据元素需要进行个数据元素需要进行n-i+1次比较,次比较,即
6、即Ci=n-i+1。又假设查找每个数据元素的概率相等,即。又假设查找每个数据元素的概率相等,即Pi=1/n,则顺序查则顺序查找算法的平均查找长度为:找算法的平均查找长度为:第8页,本讲稿共40页8.2.2 折半查找法折半查找法1 1、折半查找定义、折半查找定义折半查找法又称二分查找法,这种方法对待查找的列表有折半查找法又称二分查找法,这种方法对待查找的列表有两个要求两个要求:列表必须是列表必须是顺序存储结构顺序存储结构 列表必须按列表必须按关键字大小有序排列关键字大小有序排列 学号学号姓名姓名平均成绩平均成绩其它其它00010001 王一王一90.290.2.00020002张三张三70700
7、0320032李四李四75.575.500340034 刘四刘四80.080.0.00600060钱五钱五6868.第9页,本讲稿共40页2 2、基本过程、基本过程 将表中间位置记录的关键字与需要查找的关键字比较将表中间位置记录的关键字与需要查找的关键字比较 如果如果两者相等,则查找成功两者相等,则查找成功;否则否则利用中间记录将表分成前、后两个子表利用中间记录将表分成前、后两个子表;如果如果列表中间位置记录的关键字大于要查找关键字,列表中间位置记录的关键字大于要查找关键字,则进一步查找前一子表则进一步查找前一子表 否则否则进一步查找后一子表。进一步查找后一子表。第10页,本讲稿共40页3 3
8、、算法、算法Int BinSrch(RecordList l,KeyType k)/在有序表中折半查找其关键字等于在有序表中折半查找其关键字等于k k的元素,若找到,则函数返回值为该的元素,若找到,则函数返回值为该元素在表中的位置元素在表中的位置d d low=1;high=l.length;/置区间初值置区间初值While(low=high)mid=(low+high)if(k=l.rmid.key)return (mid)/找到待查元素找到待查元素else if(kl.rmid.key)high=mid-1;else low=mid+1;return(0);第11页,本讲稿共40页4 4、
9、性能分析、性能分析 折半查找过程可用一折半查找过程可用一二叉判定树二叉判定树描述。描述。二叉判定树结构:二叉判定树结构:树中每一结点对应表中一记录,结点值设为记录树中每一结点对应表中一记录,结点值设为记录在列表中的位置序号。在列表中的位置序号。61215182225283546586012345678101163124597810119第12页,本讲稿共40页4 4、性能分析、性能分析 从根到被查结点路径关键字比较次数为被查从根到被查结点路径关键字比较次数为被查结点结点层次数层次数 假设表的长度假设表的长度n=2n=2h h-1,-1,则相应判定树必为深则相应判定树必为深度是度是h h的满二叉
10、树,的满二叉树,h=logh=log2 2(n+1)(n+1)又假设每个记录的查找概率相等,则折半又假设每个记录的查找概率相等,则折半查找成功时的查找成功时的平均查找长度为平均查找长度为 树中层次为树中层次为1 1的结点有的结点有1 1个,层次为个,层次为2 2的的结点有结点有2 2个,层次为个,层次为h h的结点有的结点有2 2h-1h-1个个第13页,本讲稿共40页5 5、二叉判定树举例、二叉判定树举例(Apr,Aug,Dec,Feb,Jan,July,june,Mar,May,Nov,Oct,Sep)JulyDecAugAprFebJanMayJuneMarOctSepNov其在等概率其
11、在等概率(1/12)(1/12)的情况下,查找成的情况下,查找成功的平均查找长度:功的平均查找长度:ASL(1+2*2+3*4+4*5)/12=3.1第14页,本讲稿共40页算法优点算法优点比较次数少比较次数少查找速度快查找速度快平均性能好平均性能好算法缺点算法缺点待查表为有序表待查表为有序表插入、删除困难插入、删除困难第15页,本讲稿共40页8.2.3 分块查找法分块查找法1 1、对所查表的要求、对所查表的要求将列表分成若干块(子表),一般情况下,块的长度均匀,最后将列表分成若干块(子表),一般情况下,块的长度均匀,最后一块可不满一块可不满每块内元素无序每块内元素无序块与块间有序块与块间有序
12、18 14 12 25 828 32 45 36 58 60 88 71 0 1 2 3 4 5 6 7 8 9 10 11 122558880510索引表索引表第16页,本讲稿共40页2 2、基本思想、基本思想构造一索引表构造一索引表将待查关键字将待查关键字K K与索引表中的关键字进行比较,以确定待查记录所在与索引表中的关键字进行比较,以确定待查记录所在的块。的块。用顺序查找法,在相应块内查找关键字为用顺序查找法,在相应块内查找关键字为K K的元素的元素第17页,本讲稿共40页3 3、平均查找长度、平均查找长度 设查找索引表的平均查找长度设查找索引表的平均查找长度L LB B,相应块内顺序查
13、找的平均查找,相应块内顺序查找的平均查找长度长度L LW W,则平均查找长度:,则平均查找长度:ASLASLbsbs=L=LB B+L+Lw w 假定将长度为假定将长度为n n的表分成的表分成b b块,每块内含块,每块内含s s个元素,则个元素,则b=n/s.b=n/s.假定表中每个元素的查找概率相等,则每个索引项的查找概率为假定表中每个元素的查找概率相等,则每个索引项的查找概率为1/b,1/b,块内每个元素的查找概率为块内每个元素的查找概率为1/s,1/s,则有则有顺序法平均查找长度顺序法平均查找长度折半法平均查找长度折半法平均查找长度第18页,本讲稿共40页查找方法比较查找方法比较顺序查找
14、顺序查找折半查找折半查找分块查找分块查找ASLASL最大最大最小最小两者之间两者之间表结构表结构有序表,无序表有序表,无序表有序表有序表分块有序表分块有序表存储结构存储结构顺序存储结构,顺序存储结构,线性链表线性链表顺序存储结顺序存储结构,构,顺序存储结构,顺序存储结构,线性链表线性链表第19页,本讲稿共40页课堂练习课堂练习例例1 1:折半查找有序表(:折半查找有序表(4 4,6 6,1010,1212,2020,3030,5050,7070,8888,100100),),若查找元素若查找元素5858,则它将依次与表中那些元素比较,查找结果失败。,则它将依次与表中那些元素比较,查找结果失败。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 查找 精品 文稿
限制150内