ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:153.48KB ,
资源ID:6313672      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6313672.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构第六章.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构第六章.docx

1、数据结构第六章一、 单项选择题1.已知一个长度为16的顺序L,气元素按关键字有序排列,或采用折半查找法查找一个不在L中存在的元素,则关键字的比较次数最多的是( )。A4 B. 5C. 6 D. 72.顺序查找适合于存储结构为( )的线性表。A.顺序存储结构或链式存储结构 B.散列存储结构C.索引存储结构 D.压缩存储结构3.对长度为n的有序单链表,若查找每个元素的概率相等,则顺序查找表中任意一个元素的查找成功的平均查找长度为( )。A.n/2 B.(n+1)/2C.(n-1)/2 D.n/44.对长度为3的顺序表进行查找,若查找的第一个元素概率为1/2,查找第二个元素的概率为1/3,查找第三个

2、元素的概率为1/6,则查找表中任意一个元素的平均查找长度为( )。A.5/3 B.2C.7/3 D.4/35.当采用分块查找时,数据的组织方式为( )。A.数据分成若干块,每块内数据有序B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D. 数据分成若干块,每块(除最后一块外)中数据个数需相同6.下列关于二分查找的叙述中,正确的是( )。A表必须有序,表可以顺序方式存储,也可以链表方式存储B. 表必须有序且表中数据必须是整型,实型或字符型C. 表必须有序,而且只能从小到大排列D表

3、必须有序,且表只能以顺序方式存储7.使用二分(折半)查找元素的速度比用顺序法( )。A.必然快 B.必然慢C.相等 D.不能确定8.已知一个长度为16的顺序表,其元素按关键字有序排列,若采用折半查找查找一个不存在的元素,则比较的次数至少是( ),至多是( )。A.4 B.5C.6 D.79.已知一个有序表(13,18,24,35,47,50,62,83,90,115,134),当二分查找值为90的元素师,查找成功的比较次数为( )。A.1 B.2C.4 D.610.折半查找过程所对应的判定树是一颗( )。A.最小二叉树 B.平衡二叉树C.完全二叉树 D.满二叉树11.在有11个元素的 有序表A

4、1,2,3,11中折半查找(),查找元素为A11时,被比较元素的下标依次是( )。A.6,8,10,11 B.6,9,10,11C.6,7,9,11 D.6,8,9,1112.具有12个关键字的有序表中,对每个关键字的查找概率相同,遮半查找查找成功的平均查找长度为( ),折半查找查找失败的平均查找长度为( )。A.37/12 B.35/12C.39/13 D.49/1313.对有2500个记录的索引顺序表(分块表)进行查找,最理想的块长为( )。A.50 B.125C.500 D. 14.为提高查找效率,对有65025个元素的有序顺序表建立索引顺序结构,在最好情况下查找到表中已有元素最多需要执

5、行( )次关键字比较。A.10 B.14C.16 D.2115.设顺序存储的某线性表共有123个元素,按分块查找的要求等分为3块。若对索引表采用顺序查找法来确定子块,且确定的字块中也采用顺序查找法,则在等概率情况下,分块查找成功的平均查找长度为( )。A.21 B.23C.41 D.62 16.对长为n的有序表进行折半查找,其判定树的高度为( )。A. B. C. D. 17.下列叙述中,不符合m介B树定义要求的是( )。A.根节点最多的有m课子树 B.所有叶节点都在同一层上C.各节点内关键字均升序或者降序排列 D.叶节点之间通过指针连接18.下列关于m介B-树的说法错误的是( )。A.根节点

6、至多有m棵子树B.所有节点都在用一层次上C.非叶节点至少有m/2(m为偶数)或m/2+1(m为奇数)棵子树D.根节点中的数据是有序的19.当在一颗m阶B树中做插入操作时,若一个结点中的关键字等于( ),则必须分裂成两个结点,当向一颗树m阶的B树做删除操作时,若一个结点中的关键字个数等于( ),则可能需要同它的做兄弟或有兄弟结点合并成一个结点。A. B. C. D. 20.下列关于m阶B树的说法正确的是( )。I. 每个结点至少有两颗非空子树II. 树中每个结点至多有m-1个关键字III. 所有叶结点都在同一层IV. 当插入一个元素引起B树结点分裂后,树长高一层A.I、II B.II、IIIC.

7、III 、IV D.I、II、IV21.下列关于B树和B+树叙述中,不正确的是( )。A. B树和B+树都能有效支持顺序查找B. B树和B+树都能有效支持随机查找C. B树和B+树都是平衡的多叉树D. B树和B+树都可以用于文件索引结构22.含有n个非叶结点的m阶B-树中至少包含( )个关键字。A. B. C. D. 23.已知一课3阶B树中有2047个关键字,则此B树的最大高度为( ),最小高度为( )。A.11 B.10C.8 D.724.高度为5的3阶B树至少有( )个结点,至少有( )个结点。A.32 B.31C.120 D.12125.已知一棵5阶B树中共有53个关键字,则树的最大高

8、度为( ),最小高度为( )。A.2 .B.3C.4 D.526.具有n个关键字的m阶B-树,应有( )个叶结点。A.n+1 B.n-1C.mn D.nm/227.设有一个含有200个表项的散列表,用线性探测法解决冲突,按关键字查询时找到一个表项的平均探测次数不超过1.5,则散列表项应能够容纳( )个表项。(设查找成功的平均查找长度为,其中填装因子)A400 B. 526C624 D. 67628.在开址法中散列到同一个地址而引起的“堆积”问题是由于( )引起的。A.同义词之间发生冲突 B. 同义词之间发生冲突之间发生冲突C.同义词或同义词之间发生冲突之间发生冲突D.散列表“溢出”29.Has

9、h查找一般适用于( )情况下的查找。A.查找表为链表 B. 查找表为有序表C.关键字集合比地址集合大得多 D. 关键字集合比地址集合存在对应关系30.假定有K个关键字互为同义词,若用线性探测法把这K个关键字填入Hash表中,至少要进行( )次探测。A.K-1 B. KC.K+1 D. K(K+1)/2B A B A二 综合应用题1.若对有N个元素的有序顺序表和无序顺序表进行顺序查找,试就下列三种情况讨论两者在相等查找概率时的平均查找长度是否相同?1).查找失败。2).查找成功,且表中只有一个关键字等于给定值k的元素。3).查找成功,且表中只有若干个关键字等于给定值k的元素,要求一次能查找所有的

10、元素。2.设有序顺序表中的元素依次为017、094、154、170、275、503、509、512、553、612、677、765、897、908。1) 试画出对其进行折半查找的判定树。2) 若查找275或684的元素,将依次与表中那些元素比较?3) 计算查找成功的平均查找长度和查找不成功的平均查找长度。3已知一个有序顺序表 的表厂为8N,并且表中没有关键字相同的数据元素。假设按如下所述的方法查找一个关键字值等于给定值X的数据元素:先在A7,A15,A23,A8K-1,A8N-1中进行顺序查找,若查找成功,则算法报告成功位置并返回;若不成功,时,则可以确定一个缩小的查找范围,然后可以再这个范围

11、内执行折半查找。特殊情况:若的关键字,则查找失败。 1)画出上述查找过程的判定树。 2)计算相等查找概率下查找成功的平均查找长度。4.类比二分查找法,设计K分查找法(k为大于2的整数)如下:首先检查n/k处(n为查找表的长度)的元素是否等于要搜索的值,然后检查2n/k处的元素这样,或者找到要查找的元素,或者把集合缩小到原来的1/k,如果未找到要查找的元素,则继续在得到的集合上进行K分查找;如此进行,直到找到要查找的元素或者查找失败。试求,查找成功和查找失败的时间复杂度。5.线性表中各结点的检索概率不等,则可用如下策略提高顺序检索的效率:若找到指定的结点,将该结点和其前驱结点交换,使经常被检索的

12、结点尽量位于表的前端。是设计在顺序结构和链式结构的线性表实现上述策略的顺序检索算法。6.一个长度为的升序序列S,处在第个位置的数为S的中位数。例如,若序列S1=(11,13,15,17,19),则S1的中位数是15,两个序列的中位数是含他们所有元素的的升序序列的中位数。例如,若S2=(2,4,6,8,20),则S1和S2的中位数是11。现在有两个等长升序序列A和B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列A和B的中位数。要求:(1)给出算法的基本思想。(2)根据设计思想,采用C或者C+或JAVA语言描述算法,关键之处给注释。(3)说明你所涉及的算法的时间复杂度和空间复杂度。

13、7.写出折半查找的递归算法。初始调用时,low为1,high为ST.length8.利用B树做文件索引时,若假设磁盘的页块的大小是4000字节(实际应该是2的次幂,为了计算方便),指示磁盘地址的指针需要五个字节。现有20000000个记录构成的文件,每个记录为200字节,其中包括五个关键字节。试问在次采用B树做索引的文件中,B树的阶数应为多少?假定文件数据部分未按关键字有序排列,则索引部分需要占多少磁盘页块?9.假定把关键字key散列到有n个表项(从0到n-1编址)的散列表中。对于下面的每一个散列函数H(key)(key为整数),这些函数能够当做散列函数吗?如果能够,他是好的散列函数吗?请说明

14、理由。设函数random(n)返回一个0到n-1之间的随机整数1)H(key)=key/n。2)H(key)=1.3)H(key)=(key+random(n)%n。4)H(key)=key%p(n);其中p(n)是不大于n的最大素数。10.使用散列函数H(key)=key%11,把一个整数值转换成散列列表的下标,现在要把数据1,13,34,38,33,27,22依次插入到散列表中。1)使用线性探测在散列法来构造散列表。2)使用链表地址法构造散列表。 答案部分一、 选择题1-10 B A B A B D D AB B B11-20 B AD A C B A D C A B21-30 A D A

15、D BD CB A A C D D二、 综合题1解答:(1)平均查找长度不同。因为有序顺序表查找到其关键字值比要查找值大的元素时就停止查找,并报告失败信息,不必查找到表尾;而无需表必须查找到表尾才能确定查找失败。(2)平均查找长度相同。两者查找到表中元素的关键字值等于给定值时就停止查找。(3)平均查找长度不同。有序顺序表中关键字相等的元素相继排列在一起,只要查找到第一个就可以连续查找到其他关键字相同的元素。而无序顺序表必须查找全部表中元素才能才能确定相同关键字的元素都找出来,所需时间就不相同了。2解答:1)判定树如下图所示。2)若查找元素275,依次与表中元素509、154、275进行比较,共

16、比较3次。若查找684,依次与表中元素509、677、897、765进行比较,共进行四次。3)在查找功能时,会找到图中某个圆形结点,其平均长度为在查找失败时,会找到图中某个方形结点,但这个结点是虚构的,最后一次的比较元素为其父节点(圆形结点),故其平均长度为1. 解答:1)相应的判定树如下图所示。其中,每个关键字下的数字为其查找成功时的关键字比较次数。2)查找成功的平均查找长度为4解答:与二分法查找类似,k分查找法可用k叉树来描述。K分查找法在查找成功时进行比较的关键字个数最多不超过根的深度,而具有n个结点的k叉树的深度为,所以k分查找法在查找成功时和给定值比较的关键字个数至多为,即时间复杂度

17、为。同理,查找不成功时,和给定值进行比较的关键字个数至多为,故时间复杂度也为。5 解答:算法的基本思想:检索时可从开头开始向后顺序扫描,若找到指定结点,将该结点和其前驱结点(若存在)交换。采用顺序结构的存储结构的算法实现如下:int seqsrch(RcdType R,ElemType k)/顺序查找线性表,找到后和前面的元素交换Int i=0;While (Ri.key!=k)&(in) i+ if(i0) /找到 ,交换 temp=Ri;Ri=Ri-1;Ri-1=temp;Return -i; /返回交换后位置else return -1; /查找失败链表的实现方式类比这个方式自己完成。6

18、 解答:(1)算法的基本思想如下:分别求出序列A和B的中位数,设为a和b,求序列A和B的中位数的过程如下:1)若a=b,则a或者b即为所求的中位数,算法结束。2)若ab,则舍弃序列A中较大的一半,同时舍弃B中较小一半,要求舍弃长度相等。在保留两个升序序列中,重复过程1,2,3,直到两个序列中只含一个元素为止,较小者即为所求的中位数。(2)算法实现如下:Int M_search(int A,int B,int n) int s1=0,d1=n-1,m1,s2=1,d2=n-1,m2;/分别表示序列A和B中的首位数、末尾数和中位数 While (s1!=d1|s2!=d2) m1=(s1+d1)/

19、2; m2=(s2+d2)/2; if(Am1)=Bm1) return Am1; /满足条件1if(Am1)Bm1) /满足条件2 if(s1+d1)%2=0) /若元素个数为奇数 s1=m1;/舍弃A中间点以前的部分且保留中间点 d2=m2;/舍弃 B中间点以后的部分且保留中间点 else /元素个数为偶数 s1=m1+1; /舍弃A中间点及中间点以前的部分 d2=m2; /舍弃B中间点以后的部分且保留中间点 else /满足条件3 if(s1+d1)%2=0)/若元素为奇数 d1=m1; /舍弃A中间点以后的部分且保留中间点 s2=m2; /舍弃B中间点以前的部分且保留中间点 else

20、/元素个数为偶数 d1=m1+1; /舍弃A中间点以前的部分且保留中间点 s2=m2; /舍弃B中间点及中间点的以前部分 return As1high) return 0;mid=(low+high)/2; /取中间位置if(keyST.elemmid) /向后半部分查找 Search(ST,key,mid+1,high);Else if (key ST.elemmid) /向前半部分查找 Search(ST,key,low,mid-1);Else /查找成功 Return mid;算法把规模为n复杂问题经过多次递归调用转化我规模减半的子问题求解。时间复杂度为,算法中用到了一个递归工作栈,其规

21、模于递归深度有关,也是8 解答:根据B树的概念,一个索引结点应适应操作系统一次读写的物理记录大小,其大小应取不超过单最接近一个磁盘页块的大小。假设B树为M阶,一个B树最多存放m-1个关键字(5个字节)和对应的记录地址(5字节)、m个子树指针(5个字节)和一个指示结点中实际关键字个数的整数(2字节)。则有:计算结果,。一个索引结点最多可存放m-1=256个索引项,最少可存放个索引项。全部有n=20000000个记录,每个记录占用空间200个字节,每个页块可存放4000/200=20个记录,则全部记录分布在20000000/20=1000000页块中,最多需要占用1000000/133=7519个

22、磁盘页块作为B树的索引,最少占用1000000/266=3759个磁盘页块作为B树索引。9 解答:1)不能当做散列函数,因为key/n可能大于n,这样无法找到合适的位置。2)能当做散列函数,但不是一个好的散列函数,因为所有的关键字都映射到同一位置,造成大量的冲突机会。3)不能当做散列函数,因为该函数的返回值不确定,这样无法进行正常查找。4)能当做散列函数,是一个好的散列函数。10 解答:1)由装载因子0.7,数据总数为7,得一维数组大小为7/0.7=10,数组下标为0-9。所构造的散列函数值如下所示:Key78301118914H(key)0365560采用线性探测法处理冲突,所构造的散列表为

23、:地址0123456789关键字714811301892)查找成功时,在等概率情况下,查找每个表中元素的概率时相等的,因此,是根据表中元素个数来计算平均查找长度,各关键字的比较次数为:Key78301118914次数1111332故,ASL=查找次数/元素个数=(1+2+1+1+1+3+3)/7=12/7在计算查找失败时的平均查找长度时,要特别注意防止定势。在查找失败时既不是根据表中元素个数,也不是根据表长来计算平均查找长度的。查找失败时,在概率相等情况下,经过散列函数计算后只可能映射到表中0-6位置,且映射到0-6中任一位置的概率是相等的。因此,是根据散列函数(MOD后面的数字)来计算平均查找长度。在等概率下,查找失败的比较次数为:H(key)0123456次数3212154故,ASL(不成功)=查找次数/散列后的地址个数 =(3+2+1+2+1+5+4)/7=18/7

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1