第八章+查找5.9.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构;主要内容;1.静态查找表中各种方法及其运算。 2.二叉排序树的建立、查找,插入和删除算法。 3.最佳二叉排序树,平衡二叉树的性质和手工绘制。 4.B-树是多路平衡外查找树,手工模拟B-树插入和删除。 5.散列表的建立、查找。 6. 平均查找长度(ASL)的计算;查找表: n个性质相同的数据元素构成的有限集合,元素间除同属一个集合外,别无联系。 基本操作:按关键字查找、插入、删除。 查找结果: 查找成功(表中存在特定元素,输出该记录) 查找不成功(表中不存在特定元素,也应输出失败标志或失败位置);静态查找表 数据集合“只读”,即只能对该数据集合进行查询操作 动态查找表 数据集合“可写”,即可对集合元素做插入、删除等操作 注: 查找算法和数据存储的结构有关;关键字 数据元素中某个数据项或组合项的值 可以标识一个数据元素 关键字可以???同,即不一定唯一标识这个元素 主关键字 可以唯一标识一个记录的关键字 次关键字 识别若干记录的关键字;平均查找长度(Average Search Length) 查找就是不断将数据元素的关键字与待查找关键字进行比较,查找算法在查找成功时平均比较的次数称作平均查找长度 Pi:查找第i个数据元素的概率 Ci:查找该元素的过程中比较的次数;静态查找表上的查找 ; 将待查关键字值与查找表中各数据元素的关键字值一一进行比较,直至找到或确定找不到。;顺序表的机内存储结构; int seqsearch_1(table R[],keytype K) { ∥在顺序表R[1..n]中顺序查找关键字为k的结点,成功返回结点位置,失败返回0。0号单元用作监视哨 int i=1; R[0].key=K; ∥设置监视哨 ∥从表头向后查找 while( R[i].key != K ( i = n ) ) i++; ∥找不到为-1,找到则返回元素在顺序表中的位置 if( i == n+1 ) return(-1); else return i; } ; int seqsearch_2(table R[],keytype K) { ∥在顺序表R[1..n]中顺序查找关键字为k的结点,成功返回结点位置,失败返回0。0号单元用作监视哨 int i=n; R[0].key=K; ∥设置监视哨 ∥从表尾向前查找 while( R[i].key != K ) i--; ∥找不到为-1,找到则返回元素在顺序表中的位置 if( i == 0 ) return(-1); else return i; } ; 监视哨技术使顺序查找在n≥1000时,进行一次查找所需的平均时间几乎减少一半。;线性查找;线性查找;线性查找;1.将表中各数据元素按关键字值有序排列; 2.将待查关键字值与最中间的数据元素的关键字值比较,若两者相等,则找到; 若待查关键字值较小,则在表的前半部分找; 若待查关键字值较大,则在表的后半部分找。 3.重复2,直至找到或确定找不到。; 举例;折半查找:非递归算法;int Search_Bin2(table R[],keytype k,int low,int high) { //递归出口 if(lowhigh) return 0; mid=(low+high)/2; if( k==R[mid].key ) return mid; //找到待查元素 else if( k R[mid].key ) //继续在后半区间查找 return Search_Bin2(R,k,mid+1,high); else //继续在前半区间查找 return Search_Bin2(R,k,low,mid-1); }∥SearchBin2 ; 算法分析;折半查找;查找表中任一元素的过程,即是判定树中从根到该元素结点的过程,比较次数为该元素结点在树中的层次数。 对于n个结点的判定树,树高为k = 。 折半查找在查找成功时,所进行的关键字比较次数至多为 。;折半查找的性能;折半查找;1. 将表中各数据元素按关键字值分块有序排列;; 查找方法; 查找方法; 举例;索引表结点的数据类型定义如下:;建立索引表; ;分块查找算法(接上页);对索引表查找的ASL;分块查找性能分析;S为每块内部的记录个数,n/s即块的数目; 算法分析; 折半查找适用于一经建立就很少变动(当插入或删除操作频繁时,为维护表的有序性,势必要移动表中很多记录,这种由移动记录引起的额外时间开销,就会抵消折半查找的优点)而查找操作却很频繁的

文档评论(0)

糖糖 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档