- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
查找教程文件.ppt
第9章 查找;基本概念;查找方法评价
查找速度
占用存储空间多少
算法本身复杂程度
平均查找长度ASL(Average Search Length):为确定记录在表中的位置,需和给定值进行比较的关键字的个数的期望值叫查找算法的~;9.1 静态查找表;i;顺序查找的缺点:
平均查找长度较大,特别是当待查找集合中元素较多时,查找效率较低。
顺序查找的优点:
算法简单而且使用面广。
对表中记录的存储没有任何要求,顺序存储和链接存储均可;
对表中记录的有序性也没有要求,无论记录是否按关键码有序均可。;9.1.2 有序表的查找——折半查找;例:查找值为14的记录的过程: ;例:查找值为22的记录的过程: ;算法实现
设表长为n,low、high和mid分别指向待查元素所在区间的上界、下界和中点,k为给定值
初始时,令low=1,high=n,mid=?(low+high)/2?
让k与mid指向的记录比较
若k==r[mid].key,查找成功
若kr[mid].key,则high=mid-1
若kr[mid].key,则low=mid+1
重复上述操作,直至lowhigh时,查找失败;算法描述;例 ;折半查找算法;折半查找的性能分析 ;判定树的构造方法
⑴ 当n=0时,折半查找判定树为空;
⑵ 当n>0时,折半查找判定树的根结点是有序表中序号为mid=(n+1)/2的记录,根结点的左子树是与有序表r[1] ~ r[mid-1]相对应的折半查找判定树,根结点的右子树是与r[mid+1] ~ r[n]相对应的折半查找判定树。;- 1;具有n个结点的折半查找判定树的深度为 ;有n个结点的判定树的深度为?log2n?+1
折半查找法在查找过程中进行的比较次数最多不超过其判定树的深度
折半查找的时间复杂度为O(log2n)
折半查找的ASL; 设有序顺序表中的元素依次为017, 094, 154, 170, 275, 503, 509, 512, 553, 612, 677, 765, 897, 908。试画出对其进行折半搜索时的二叉判定树, 并计算搜索成功的平均搜索长度和搜索不成功的平均搜索长度。 ; 设有序顺序表中的元素依次为017, 094, 154, 170, 275, 503, 509, 512, 553, 612, 677, 765, 897, 908。试画出对其进行折半搜索时的二叉判定树, 并计算搜索成功的平均搜索长度和搜索不成功的平均搜索长度。 ;9.1.4 索引顺序表的查找
索引顺序表查找 的思想;例如,给定关键字序列如下:22,12,13,8,9,20,33,42,44,38,24,48,60,58,74,49,86,53,假设n=3,即将该序列分成3个子表,每个子表有6个元素,则得到的主表和索引表如图所 示。;分块查找方法的ASL;分块检索算法
(1)当顺序检索索引表时:
#define M 99
typedef struct { keytype key ; int stadr ; int len ; } indexlist ; /*索引表的类型定义*/
indexlist ID[M] ; /*ID为具有indexlist类型的R上的一个索引表*/
; int Blocksrch( R,ID,m,k )
sqlist R[ ] ; indexlist ID[ ] ; /* 索引表ID */ keytype k ; int m ;
{ int i, j i = 0 ; while((i = m-1)(k ID[i].key)) /* 顺序检索索引表 */ i + +; if ( im-1 ) retutn(0) /* 检索失败 */ else
{ j = R[i].stadr; /* 待检索块的第一个记录的下标 */ while((j ID[i].stadr+ID[i].len)(k != R[j].key)) j ++ ; /* 第i块中顺序检索给定值为K的记录元素 */ if (j == ID[i].stadr + ID[i].len) retutn(0) /*块中检索失败 */ else
return (j) ; /* 检
您可能关注的文档
- 材料物理教材chapter 18 magnetical properties.ppt
- 材料物理教材chapter 19 optical properties.ppt
- 材料物理教材Chapter 3 metal and ceramic.ppt
- 材料物理教材chapter 4 polymer.ppt
- 材料物理教材chapter 7 mechanical properties.ppt
- 材料物理教材Chapter1 2.ppt
- 材料现代分析测试方法第四节 原子吸收光谱法演示教学.ppt
- 材料现代研究方法 1-教材.ppt
- 材料现代研究方法 X射线衍射的强度培训资料.ppt
- 材料现代研究方法 晶体学基础教材课程.ppt
文档评论(0)