《第7章查找技术习题课.ppt》由会员分享,可在线阅读,更多相关《第7章查找技术习题课.ppt(18页珍藏版)》请在优知文库上搜索。
1、第第7章章 查找技术习题课查找技术习题课填空填空1、在数据的存放无规律而言的线性表中进行检索的最佳方法是 。顺序查找(线性查找)顺序查找(线性查找)2、线性有序表(a1,a2,a3,a256)是从小到大排列的,对一个给定的值k,用二分法检索表中与k相等的元素,在查找不成功的情况下,最多需要检索 次。设有100个结点,用二分法查找时,最大比较次数是 。87填空填空3、假设在有序线性表a20上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 ;比较四次查找成功的结点数为 ;平均查找长度为 。28显然,平均查找长度显然,平均查找长度O(log2n)5次(次(25)。但具体是多
2、少次,则不应当按)。但具体是多少次,则不应当按照公式照公式)1(log12nnnASL来计算(来计算(即(即(21log221)/204.6次并不正确!次并不正确!)。因为这是在假设)。因为这是在假设n2m-1的情况下推导出来的公式。的情况下推导出来的公式。应当用穷举法罗列:应当用穷举法罗列:全部元素的查找次数为(全部元素的查找次数为(122438455)74;ASL74/20=3.7 !3.7填空填空4、折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 比较大小。28,6,12,205、在各种查找方法中,平均查找长度与结点个数
3、n无关的查找方法是 。散列查找散列查找6、散列法存储的基本思想是由 决定数据的存储地址。关键字的值关键字的值填空填空7、有一个表长为m的散列表,初始状态为空,现将n(nm)个不同的关键码插入到散列表中,解决冲突的方法是用线性探测法。如果这n个关键码的散列地址都相同,则探测的总次数是 。n(n-1)/2=(12n-1)选择选择1、在表长为的链表中进行线性查找,它的平均查找长度为 。A)ASL=nB)ASL=(n+1)/2C)ASL=+1D)ASLlog2(n+1)-1nB2、折半查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找表中元素58,则它将依次与表中 比较大小
4、,查找结果是失败。A)20,70,30,50B)30,88,70,50C)20,50D)30,88,50A选择选择3、对22个记录的有序表作折半查找,当查找失败时,至少需要比较 次关键字。A)3B)4C)5D)6C4、链表适用于 查找。A)顺序B)二分法C)顺序,也能二分法 D)随机 A5、折半搜索与二叉搜索树的时间性能 。A)相同B)完全不同C)有时不相同D)数量级都是O(log2n)C简答简答1、对分(折半)查找适不适合链表结构的序列,为什么?用二分查找的查找速度必然比线性查找的速度快,这种说法对吗?不适合!虽然有序的单链表的结点是按从小到大(或从大到小)顺序排列,但不适合!虽然有序的单链
5、表的结点是按从小到大(或从大到小)顺序排列,但因其存储结构为单链表,查找结点时只能从头指针开始逐步搜索,故不能进行因其存储结构为单链表,查找结点时只能从头指针开始逐步搜索,故不能进行折半查找。折半查找。二分查找的速度在一般情况下是快些,但在特殊情况下未必快。例如所查数据二分查找的速度在一般情况下是快些,但在特殊情况下未必快。例如所查数据位于首位时,则线性查找快;而二分查找则慢得多。位于首位时,则线性查找快;而二分查找则慢得多。简答简答2、假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:1)画出描述折半查找过程的判定树;2)若查找元素
6、54,需依次与哪些元素比较?3)若查找元素90,需依次与哪些元素比较?4)假定每个元素的查找概率相等,求查找成功时的平均查找长度。1)先画出判定树如下(注:)先画出判定树如下(注:mid=(1+12)/2=6):):(判定树略)(判定树略)2)查找元素)查找元素54,需依次与,需依次与30,63,42,54 等元素比较;等元素比较;3)查找元素)查找元素90,需依次与,需依次与30,63,87,95,72等元素比较;等元素比较;4)求)求ASL之前,需要统计每个元素的查找次数。判定树的前之前,需要统计每个元素的查找次数。判定树的前3层共查层共查找找12243=17次;次;但最后一层未满,不能用
7、但最后一层未满,不能用84,只能用,只能用54=20次,次,所以所以ASL1/12(1720)37/123.08简答简答3、用比较两个元素大小的方法在一个给定的序列中查找某个元素的时间复杂度下限是什么?如果要求时间复杂度更小,你采用什么方法?此方法的时间复杂度是多少?查找某个元素的时间复杂度下限,如果理解为最短查找时间,则当关键字值与查找某个元素的时间复杂度下限,如果理解为最短查找时间,则当关键字值与表头元素相同时,比较表头元素相同时,比较1次即可。次即可。要想降低时间复杂度,可以改用要想降低时间复杂度,可以改用Hash查找法。查找法。此方法对表内每个元素的比较次数都是此方法对表内每个元素的比
8、较次数都是O(1)。)。简答简答4、设哈希(Hash)表的地址范围为017,哈希函数为:H(K)K MOD 16。K为关键字,用线性探测法再散列法处理冲突,输入关键字序列:(10,24,32,17,31,30,46,47,40,63,49)造出Hash表,并回答下列问题:1)画出哈希表的示意图;2)若查找关键字63,需要依次与哪些关键字进行比较?3)若查找关键字60,需要依次与哪些关键字比较?4)假定每个关键字的查找概率相等,求查找成功时的平均查找长度。(1)画表如下:)画表如下:012345678910111213141516173217634924401030314647(2)查找)查找6
9、3,首先要与首先要与H(63)=63%16=15号单元内容比较,即号单元内容比较,即63 vs 31,no;然后顺移,与然后顺移,与46,47,32,17,63相比,一共比较了相比,一共比较了6次!次!(3)查找)查找60,首先要与首先要与H(60)=60%16=12号单元内容比较,但因为号单元内容比较,但因为12号单元为号单元为空(应当有空标记),所以应当只比较这一次即可。空(应当有空标记),所以应当只比较这一次即可。(4)对于黑色数据元素,各比较)对于黑色数据元素,各比较1次;共次;共6次;次;对红色元素则各不相同,要统计移位的位数。对红色元素则各不相同,要统计移位的位数。“63”需要需要
10、6次,次,“49”需要需要3次,次,“40”需要需要2次,次,“46”需要需要3次,次,“47”需要需要3次,次,所以所以ASL=(6+6233)/1123/11=2.09090909092.09分析分析1、画出对长度为10的有序表进行折半查找的判定树,并求其等概率时查找成功的平均查找长度。判定树(略)判定树(略)ASL1/10(1223443)1/10(141212)29/10=2.9 分析分析2、在一棵空的二叉查找树中依次插入关键字序列为12,7,17,11,16,2,13,9,21,4,请画出所得到的二叉查找树。或称二叉分类数(略)或称二叉分类数(略)验算方法:用中序遍历应得到排序结果:
11、验算方法:用中序遍历应得到排序结果:2,4,7,9,11,12,13,16,17,21分析分析3、已知如下所示长度为12的表:(Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec)1)试按表中元素的顺序依次插入一棵初始为空的二叉排序树,画出插入完成之后的二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。2)若对表中元素先进行排序构成有序表,求在等概率的情况下对此有序表进行折半查找时查找成功的平均查找长度。3)按表中元素顺序构造一棵平衡二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。分析分析4、已知一个含有1000个记录的表,关键字为中国人姓氏的拼音,请给出此表的一个哈希表设计方案,要求它在等概率情况下查找成功的平均查找长度不超过3。设计哈希表的步骤为:设计哈希表的步骤为:1)根据所选择的处理冲突的方法求出装载因子)根据所选择的处理冲突的方法求出装载因子a的上界;的上界;2)由)由a值设计哈希表的长度值设计哈希表的长度m;3)根据关键字的特性和表长)根据关键字的特性和表长m选定合适的哈希函数。选定合适的哈希函数。注:要求注:要求ASL3,则,则m必然要尽量长,以减少冲突。必然要尽量长,以减少冲突。