第九章查找 习题解答
第9章 查找答案
第9章查找9.1知识点:静态查找表一、填空题1. 顺序查找(线性查找)2. 查找表3.静态查找表动态查找表4. ∟log2n」+15. 分块查找关键字有序排列索引表6. O(m+n) (m是块长度,n是索引表长度)7.n n+1二、选择题1.B2.D3.A4.B.三、判断题1. √2. ×3. √4. ×四、简答题1.答:不适合!虽然有序的单链表的结点是按从小到大(或从大到小)顺序排列,但因其存储结构为单链表,查找结点时只能从头指针开始逐步搜索,故不能进行折半查找。
二分查找的速度在一般情况下是快些,但在特殊情况下未必快。
例如所查数据位于首位时,则线性查找快;而二分查找则慢得多。
2.(1)先画出判定树如下(注:mid=⎣(1+12)/2⎦=6):(2)查找元素54,需依次与30, 63, 42, 54 等元素比较;(3) 查找元素90,需依次与30, 63,87, 95等元素比较;(4)求ASL之前,需要统计每个元素的查找次数。
判定树的前3层共查找1+2×2+4×3=17次;但最后一层未满,不能用8×4,只能用5×4=20次,所以ASL=1/12(17+20)=37/12≈3.083.(1)每块理想长度d=≈45(2)块数b=2000/45=45(3)ASL=(b+1)/2+(d+1)/2=(45+1)/2+(45+1)/2=46(4)b= 2000/20=100(块) 每块元素个数d=20ASL=(b+1)/2+(d+1)/2 =(100+1)/2+(20+1)/2=61五、算法设计题1.//折半查找的递归算法int Search_Bin_Recursive(SSTable ST, int key, int low, int high){if(low>high) return 0; //查找不到时返回0mid=(low+high)/2;if(ST.elem[mid].key= =key) return mid;else if(ST.elem[mid].key>key)return Search_Bin_Recursive(ST, key, low, mid-1);else return Search_Bin_Recursive(ST, key, mid+1, high);}}//Search_Bin_Recursiveint search(SqList S, KeyType x)//折半查找的非递归算法//二分查找,返回有序表中大于等于x的元素位置{int low=1,high=L.length;while(low<=high){mid=(low+high)/2;if(S.elem[mid].key==x) return midelseif(S.elem[mid].key<x) high=mid-1;//x小于mid元素,则在中点前else low=mid+1;}}9.2知识点:动态查找表一、填空题1.A=① B=② C=③2. +1、-1、03. 544. 左子树右子树5. (_n-1)/2_6. O(n)7. 左子树深度减去右子树深度二、选择题1.D2.AC3.C4.C三、判断题1.×2.√3.√4. √5. ×6. √7. √8. ×9. √四、简答题1.五、算法设计题1.bool BisortTree(BiTree T){ //其中PRE为指向当前访问结点的前驱的指针。
习题第九章查找答案
第九章查找一、选择题1.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( C )。
【北京航空航天大学 2000 一、8 (2分)】A. (n-1)/2 B. n/2 C. (n+1)/2 D. n2. 对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( A ) 【南京理工大学1998一、7(2分)】A.(N+1)/2 B. N/2 C. N D. [(1+N)*N ]/23. 下面关于二分查找的叙述正确的是 ( D ) 【南京理工大学 1996 一、3 (2分)】A. 表必须有序,表可以顺序方式存储,也可以链表方式存储 C. 表必须有序,而且只能从小到大排列B. 表必须有序且表中数据必须是整型,实型或字符型 D. 表必须有序,且表只能以顺序方式存储4. 对线性表进行二分查找时,要求线性表必须( B )【燕山大学 2001 一、5 (2分)】A.以顺序方式存储B.以顺序方式存储,且数据元素有序C.以链接方式存储D.以链接方式存储,且数据元素有序5.适用于折半查找的表的存储方式及元素排列要求为( D ) 【南京理工大学 1997 一、6 (2分)】A.链接方式存储,元素无序 B.链接方式存储,元素有序C.顺序方式存储,元素无序 D.顺序方式存储,元素有序6.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( C ) A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减【南京理工大学 1997 一、7 (2分)】7.当采用分快查找时,数据的组织方式为 ( B ) 【南京理工大学 1996 一、7 (2分)】A.数据分成若干块,每块内数据有序B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D. 数据分成若干块,每块(除最后一块外)中数据个数需相同8. 二叉查找树的查找效率与二叉树的( (1)C)有关, 在 ((2)C)时其查找效率最低【武汉交通科技大学1996 一、2(4分)】(1): A. 高度 B. 结点的多少 C. 树型 D. 结点的位置(2): A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。
第9章查找习题
第九章查找习题一、判断题1.折半查找法可以用于按值有序的线性链表的查找。
2.对两棵具有相同关键字集合而形状不同的二叉排序树,按中序遍历它们得到的序列的顺序是一样的。
3.任一二叉排序树的平均查找时间都小于用顺序查找法查找同样结点的线性表的平均查找时间。
4.中序遍历二叉排序树的结点就可以得到排好序的结点序列。
5.哈希表存储的基本思想是由关键码的值决定数据的存储地址。
6.哈希表的查找效率主要取决于哈希表造表时选取的哈希函数和处理冲突的方法。
7.装载因子是散列法的一个重要参数,它反映散列表的装满程度。
8.采用线性探测法处理散列时的冲突,当从哈希表删除一个记录时,不应将这个记录的所在位置置为空,因为这会影响以后的查找。
二、选择题1.采用顺序查找方法查找长度为n的线性表,平均查找长度为A.nB.n/2C.(n+1)/2D.(n-1)/22.对线性表采用折半查找法,该线性表必须A.采用顺序存储结构B.采用链式存储结构C.采用顺序存储结构,且元素按值有序D.采用链式存储结构,且元素按值有序3.在按值有序的线性表(5,8,11,12,15,20,32,41,57)中采用折半查找法查找20需要进行多少次元素间的比较A.3B.4C.5D.64.按逐点插入法建立对应于序列(54,28,16,34,73,62,95,60,26,43)的二叉排序树后,查找62要进行多少次比较。
A.2次B.3次C.5次D.6次5.散列法存储的基本思想是根据哪个来决定存储地址。
A.散列表空间B.元素的序号C.装载因子D.关键码值6.散列法存储的冲突指的是A.两个元素具有相同的序号B.两个元素的关键码值不同,而非码属性相同C.不同关键码值对应相同的存储地址D. 装载因子过大7.哈希地址空间为m,k为关键字,散列地址H(k)=k MOD p。
为了减少发生冲突的频率,一般取p为A.小于m的最大奇数B.小于m的最大合数C.小于m的最大素数D.大于m的最小素数8.在10阶B-树中根结点所包含的关键码...个数最多为_______,最少为________。
数据结构第9章练习及答案
数据结构第9章练习及答案1.顺序查找法适合于存储结构为()的线性表。
A)散列存储B)顺序存储或链接存储C)压缩存储D)索引存储【答案】B2.下面哪些操作不属于静态查找表()A)查询某个特定元素是否在表中B)检索某个特定元素的属性C)插入一个数据元素D)建立一个查找表【答案】C3.下面描述不正确的是()A)顺序查找对表中元素存放位置无任何要求,当n较大时,效率低。
B)静态查找表中关键字有序时,可用折半查找。
C)分块查找也是一种静态查找表。
D)经常进行插入和删除操作时可以采用折半查找。
4.散列查找时,解决冲突的方法有()A)除留余数法B)数字分析法C)直接定址法D)链地址法【答案】D5.若表中的记录顺序存放在一个一维数组中,在等概率情况下顺序查找的平均查找长度为()A)O(1)B)O(log2n) C)O(n) D)O(n2)【答案】C6.对长度为4的顺序表进行查找,若第一个元素的概率为1/8,第二个元素的概率为1/4,第三个元素的概率为3/8,第四个元素的概率为1/4,则查找任一个元素的平均查找长度为()A)11/8 B)7/4 C)9/4 D)11/4【答案】C【解析】对顺序表查找,ASL=,代入题目得:ASL=4*(1/8)+3*(1/4)+2*(3/8)+1*(1/4)=9/47.静态查找表与动态查找表二者的根本差别在于()A)它们的逻辑结构不一样B)施加在其上的操作不同C)所包含的数据元素的类型不一样D)存储实现不一样【答案】B8.若查找表中的记录按关键字的大小顺序存放在一个一维数组中,在等概率情况下折半法查找的平均检索长度是()A)O(n) B)O(log2n) C)O(nlog2n) D)O((log2n)2)【答案】B9.对有14个数据元素的有序表R[14](假设下标从1开始)进行二分查找,搜索到R[4]的关键码等于给定值,此时元素比较顺序依次为()。
A)R[1],R[2],R[3],R[4] B)R[1],R[13],R[2],R[3]C)R[7],R[3],R[5],R[4] D)R[7],R[4],R[2],R[3]【答案】C10.对22个记录的有序表作折半查找,当查找失败时,至少需要比较次关键字。
(完整word版)数据结构第九章查找
第九章查找:习题习题一、选择题1.散列表查找中k个关键字具有同一散列值,若用线性探测法将这k个关键字对应的记录存入散列表中,至少要进行( )次探测。
A. k B。
k+l C. k(k+l)/2 D. l+k (k+l)/22.下述命题( )是不成立的。
A。
m阶B-树中的每一个结点的子树个数都小于或等于mB。
m阶B-树中的每一个结点的子树个数都大于或等于『m/2-1C。
m阶B-树中的每一个结点的子树高度都相等D。
m阶B—树具有k个子树的非叶子结点含有(k-l)个关键字3.如果要求一个基本线性表既能较快地查找,又能适应动态变化的要求,可以采用( )查找方法.A。
分块 B. 顺序 C. 二分 D.散列4.设有100个元素,用折半查找法进行查找时,最大比较次数是( ),最小比较次数是( ).A。
7,1 B.6,l C.5,1 D. 8,15.散列表长m=15,散列表函数H(key)=key%13。
表中已有4个结点:addr(18)=5;addr(32)=6; addr(59)=7;addr(73)=8;其余地址为空,如果用二次探测再散列处理冲突,关键字为109的结点的地址是( )。
A. 8 B。
3 C. 5 D。
46.用分块查找时,若线性表中共有729个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应分( )个结点最佳。
A。
15 B. 27 C。
25 D。
307.散列函数有一个共同性质,即函数值应当以( )取其值域的每个值。
A.同等概率B。
最大概率C。
最小概率D。
平均概率8.设散列地址空间为O.。
m—1,k为关键字,假定散列函数为h(k)=k%p,为了减少冲突,一般应取p为( )。
A.小于m的最大奇数B. 小于m的最大素数C.小于m的最大偶数D.小于m的最大合数9.当向一棵m阶的B-树做插入操作时,若使一个结点中的关键字个数等于( ),则必须分裂成两个结点。
A。
m B。
m-l C.m+l D。
数据结构答案_第9章_查找学习与指导上课讲义
(5)查找
在查找表中确定是否存在一个数据元素的关键字等于给定值的操作,称为查找(也称为检索)。
(6)内查找、外查找
整个查找过程全部在内存进行,则称为内查找;若在查找过程中还需要访问外存,则称为外查找。
= =5。
【例5】对含有n个互不相同元素的集合,同时找最大元素和最小元素至少需进行多少次比较?
由此可见,二分查找法的平均查找长度最小,分块查找法次之,顺序查找法平均查找长度最大。
【例4】画出对长度为20的有序表进行二分查找的判定树,并指出在等概率情况下,查找成功的平均查找长度以及查找失败时所需的最多与关键字值的比较次数。
分析:对长度为20的有序顺序表进行二分查找的判定树如图9-1所示。
图9-1判定树
数据结构答案_第9章_查找学习与指导
第
9.1知识点分析
1.基本概念
(1)查找表
由同一类型的数据元素(或记录)构成的集合称为查找表。
(2)静态查找
在查找过程中仅查找某个特定元素是否存在或它的属性的,称为静态查找。
(3)动态查找
在查找过程中对查找表进行插入元素或删除元素操作的,称为动态查找。
(4)关键字
等概率情况下的平均查找长度:
ASL=(1*1+2*2+3*4+4*8+6*5)/20=74/20=3.7
二分查找在查找失败时所需与键值比较次数不超过判定树的高度,因为判定树中度小于2的结点只可能在最下面的两层上,所以n个结点的判定树高度与n个结点的完全二叉树的高度相同,即为 。所以n个元素的有序表,查找失败时与关键字值最多比较 次。所以20个元素的有序表查找失败时最多与关键字值的比较次数为:
第九章 严蔚敏数据结构课后答案-查找
else if(key<r[mid].key) high=mid; else low=mid; } //本算法不存在查找失败的情况,不需要 return 0; }//Locate_Bin
while(p->data>key) p=p->pre; L.sp=p;
} else if(p->data<key) { while(p->data<key) p=p->next;
L.sp=p; } return p; }//Search_DSList 分析:本题的平均查找长度与上一题相同,也是 n/3.
}//while //借助中序遍历找到元素 x 及其前驱和后继结点 if(!ptr) return ERROR; //未找到待删结点 Delete_BSTree(ptr); //删除 x 结点 if(pre&&pre->rtag) pre->rchild=suc; //修改线索 return OK; }//BSTree_Delete_key
printf("a=%d\n",last); if(last<=x&&T->data>x) //找到了大于 x 的最小元素 printf("b=%d\n",T->data); last=T->data; if(T->rchild) MaxLT_MinGT(T->rchild,x); }//MaxLT_MinGT
数据结构(c语言版)题集答案——第九章_查找
*;
;
*;
} ;
{
*;
;
} ;供查找地双向循环链表类型
*( )在有序双向循环链表存储结构上地查找算法,假定每次查找都成功文档来自于网络搜索
{
;
(>>)
{
(>>) >;
;
}
(>{
(>;
;
}
;
}
分析:本题地平均查找长度与上一题相同,也是.
;
( )判断二叉树是否二叉排序树,是则返回,否则返回
{
(>) (>);
{
;
()沿分支向下查找
{
(>>[]);确定关键字所在子树
(>) ;关键字太大
>[];
}
(>[]);在叶子结点中查找
(>) ;找不到关键字
;
;
}
( )在树中插入字符串地结构见第四章文档来自于网络搜索
{
(*)(());
>;
>;建叶子结点
[];
;
(<>[([])])
{
;
>[([])];
;
}自上而下查找
(>)如果最后落到分支结点(无同义词):
(>>>)其余部分与上一题同
{
(>) >;
(>);
}
(>)
{
(>) >;
(>);
}
>;
>;
}
{
;
;
;域表示该结点地左子树地结点总数加
*,*;
} ,*;含域地平衡二叉排序树类型
中南大学数据结构与算法第9章查找课后作业答案
第9章查找习题练习答案1.对含有n个互不相同元素的集合,同时找最大元和最小元至少需进行多少次比较?答:设变量max和min用于存放最大元和最小元(的位置),第一次取两个元素进行比较,大的放入max,小的放入min。
从第2次开始,每次取一个元素先和max比较,如果大于max 则以它替换max,并结束本次比较;若小于max则再与min相比较,在最好的情况下,一路比较下去都不用和min相比较,所以这种情况下,至少要进行n-1次比较就能找到最大元和最小元。
2.若对具有n个元素的有序的顺序表和无序的顺序表分别进行顺序查找,试在下述两种情况下分别讨论两者在等概率时的平均查找长度:(1)查找不成功,即表中无关键字等于给定值K的记录;(2)查找成功,即表中有关键字等于给定值K的记录。
答:查找不成功时,需进行n+1次比较才能确定查找失败。
因此平均查找长度为n+1,这时有序表和无序表是一样的。
查找成功时,平均查找长度为(n+1)/2,有序表和无序表也是一样的。
因为顺序查找与表的初始序列状态无关。
3.画出对长度为18的有序的顺序表进行二分查找的判定树,并指出在等概率时查找成功的平均查找长度,以及查找失败时所需的最多的关键字比较次数。
答:等概率情况下,查找成功的平均查找长度为:ASL=(1+2*2+3*4+4*8+5*3)/18=3.556查找失败时,最多的关键字比较次树不超过判定树的深度,此处为5.4.为什么有序的单链表不能进行折半查找?答:因为链表无法进行随机访问,如果要访问链表的中间结点,就必须先从头结点开始进行依次访问,这就要浪费很多时间,还不如进行顺序查找,而且,用链存储结构将无法判定二分的过程是否结束,因此无法用链表实现二分查找。
5.设有序表为(a,b,c,e,f,g,i,j,k,p,q),请分别画出对给定值b,g和n进行折半查找的过程。
解:(1)查找b的过程如下(其中方括号表示当前查找区间,圆括号表示当前比较的关键字)下标: 1 2 3 4 5 6 7 8 9 10 11 12 13第一次比较: [a b c d e f (g) h i j k p q]第二次比较: [a b (c) d e f] g h i j k p q第三次比较: [a (b)]c d e f g h i j k p q经过三次比较,查找成功。
数据结构第九章查找习题及复习资料
第九章查找一、选择题1.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( )。
A. (n-1)/2 B. n/2 C. (n+1)/2 D. n2. 下面关于二分查找的叙述正确的是 ( )A. 表必须有序,表可以顺序方式存储,也可以链表方式存储 C. 表必须有序,而且只能从小到大排列B. 表必须有序且表中数据必须是整型,实型或字符型 D. 表必须有序,且表只能以顺序方式存储3. 用二分(对半)查找表的元素的速度比用顺序法( )A.必然快 B. 必然慢 C. 相等 D. 不能确定4. 具有12个关键字的有序表,折半查找的平均查找长度()A. 3.1B. 4C. 2.5D. 55.当采用分块查找时,数据的组织方式为 ( )A.数据分成若干块,每块内数据有序B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D. 数据分成若干块,每块(除最后一块外)中数据个数需相同6. 二叉查找树的查找效率与二叉树的( (1))有关, 在 ((2))时其查找效率最低(1): A. 高度 B. 结点的多少 C. 树型 D. 结点的位置(2): A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。
7. 对大小均为n的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找失败,它们的平均查找长度是((1)) ,对于查找成功,他们的平均查找长度是((2))供选择的答案:A. 相同的B.不同的9.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( ) A.(100,80, 90, 60, 120,110,130) B.(100,120,110,130,80, 60, 90)C.(100,60, 80, 90, 120,110,130)D. (100,80, 60, 90, 120,130,110)10. 在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0右孩子的平衡因子为1,则应作( ) 型调整以使其平衡。
(完整word版)第9章习题(带答案)
1、设有100个数据元素,采用折半搜索时,最大比较次数为 ( )。
A. 6B. 7C. 8D. 102、在有n个结点的顺序表中,若查找每个数据元素的概率相同,则在查找成功的条件下查找次数最多为 n ,最少为 1,平均为(n+1)/2 。
3、为度量一个搜索算法的性能,需要在时间和空间方面进行权衡。
( 对 )通常散列法时间效率更高。
( 对 )4、使用二分查找方法时,要求查找表中各元素的键值必须是排列的。
A.递增或递减 B. 递增 C. 递减 D. 无序5、对有n个结点的有序表进行折半查找,若查找每个数据元素的概率相同,则n)。
在查找成功的条件下的时间复杂度最少为O(1) ,平均为 O(log26、有一个有序表{1,3,9,12,32,41,45,62,75,77},当用二分查找法查找值为75的结点时,经()次比较后查找成功A.4B.3C.2D.17、将关键字序列(56,27,38,75,70,85,72)依次插入初态为空的二叉排序树中,56后的二叉排序树为8、若在线性表中采用二分查找法查找元素,该线性表应该( )。
A.元素按值有序 B.采用顺序存储结构C.元素按值有序,且采用顺序存储结构D.元素按值有序,且采用链式存储结构9、对二叉排序树进行( )遍历,可以得到该二叉树所有结点构成的有序序列。
A. 前序B.中序C.后序D.按层次10、将10个元素散列到100000个单元的哈希表中,则( )产生冲突。
A. 一定会B. 一定不会C. 仍可能会11、在构造哈希表中,通常处理冲突的方法是开放定址法和链地址法。
设有一个用线性探测法解决冲突得到的哈希表:T: 0 1 2 3 4 5 6 7 8 9 1012、哈希函数为H(key)=key%11,若要查找元素14,探测的次数是()A、 3B、 7C、6D、913、依次将关键字7、1、3、6、2、4、5插入到空二叉排序树, 树的深度变为__7___。
对长度为20的有序表进行二分查找的判定树的高度为____5______。
最新数据结构答案_第9章_查找学习与指导
第9章查找129.1 知识点分析31. 基本概念4(1)查找表5由同一类型的数据元素(或记录)构成的集合称为查找表。
6(2)静态查找7在查找过程中仅查找某个特定元素是否存在或它的属性的,称为静态查找。
8(3)动态查找9在查找过程中对查找表进行插入元素或删除元素操作的,称为动态查找。
(4)关键字1011关键字是数据元素(或记录)中某个数据项的值,用它可以标识数据元素(或记录)。
关键字分主关键字(唯一地标识一个记录的关键字)和次关键字(标识1213若干个记录的关键字)。
14(5)查找在查找表中确定是否存在一个数据元素的关键字等于给定值的操作,称为查15找(也称为检索)。
16 (6)内查找、外查找17 整个查找过程全部在内存进行,则称为内查找;若在查找过程中还需要访问18外存,则称为外查找。
19 (7)平均查找长度ASL 20 查找成功时平均查找长度: 2122其中:P i 为找到表中第i 个数据元素的概率,且有:23 C i 为查找表中第i 个数据元素所用到的比较次数。
不同的查找方法有24不同的C i 。
25 2.顺序查找26 顺序查找又称线性查找,是最基本的查找方法之一。
顺序查找既适用于顺序27表,也适用于链表。
顺序查找的基本思想:从表的一端开始,顺序扫描线性表,28依次按给定值kx 与关键字(Key )进行比较,若相等,则查找成功,并给出数29据元素在表中的位置;若整个表查找完毕,仍未找到与kx 相同的关键字,则30 ∑=•=ni ii C P ASL 111=∑=n i i P查找失败,给出失败信息。
31323.二分查找33二分查找也叫折半查找,是一种效率较高的查找方法,但前提是表中元素必须按关键字有序(按关键字递增或递减)排列。
二分查找的基本思想:在3435有序表中,取中间元素作为比较对象,若给定值与中间元素的关键字相等,则36查找成功;若给定值小于中间元素的关键字,则在中间元素的左半区继续查找;37若给定值大于中间元素的关键字,则在中间元素的右半区继续查找。
数据结构课后习题答案第九章 查找
第九章9.1 若对大小均为n的有序顺序表和无序顺序表分别进行顺序查找,试在下列三种情况下分别讨论两者在等概率时平均查找长度是否相同?(1)查找不成功,即表中没有关键字等于给的值K的记录;(2)查找成功,且表中只有一个关键字等于给定值K的记录;(3)查找成功,且表中有若干关键字等于给定值K的记录,要求找出所有这些记录。
答:(1)相同,有序n+1; 无序n+1(2)相同,有序12n+;无序12n+(3)不相同,对于有序表,找到了第一个与K相同的元素后,只要再找到与K 不同的元素,即可停止查找;对于无序表,则要一直查找到最后一个元素。
9.3 画出对长度为10的有序表进行折半查找的判定树,并分别求其等概率时查找成功和查找不成功的ASL。
查找成功:ASL=1/10(1*1+2*2+3*4+4*3)=2.92.设顺序表中关键字是递增有序的,试写一顺序查找算法,将哨兵设在表的高下标端。
然后求出等概率情况下查找成功与失败时的ASL。
【分析】因为顺序表中关键字是递增有序的,所以从低下标端开始顺序查找,若当前的关键码比要查找的关键码大,说明查找失败,终止查找。
【解答】(1)算法int seqsearch(SeqList R,KeyType K){int i;R[n]=K; // 设置哨兵i=0;while (R[i].key<K)i++;if (R[i].key==K)return i% n;elsereturn 0;}(2)查找长度成功情况:ASL succ=(1+2+3+……+n)/n=(n+1)/2失败情况:K<R[0].key时,比较1次,就终止查找;R[0].key<K< R[1].key时,比较2次,就终止查找;R[1].key<K< R[2].key时,比较3次,就终止查找;…R[n-2].key<K< R[n-1].key时,比较n次,就终止查找;R[n-1].key<K时,比较n+1次,就终止查找;所以ASL unsucc=((1+2+3+……+n+(n+1))/(n+1)=(n+2)/2。
算法与数据结构答案第9章查找
第9章 集合一、基础知识题假设对长度均为n 的有序的顺序表和无序的顺序表别离进行顺序查找,试在以下三种情形下别离讨论二者在等概率情形下平均查找长度是不是相同?(1)查找不成功,即表中没有和关键字K 相等的记录; (2)查找成功,且表中只有一个和关键字K 相等的记录;(3)查找成功,且表中有多个和关键字K 相等的记录,要求计算有多少个和关键字K 相等的记录。
【解答】(1)平均查找长度不相同。
前者在n+1个位置都可能失败,后者失败时的查找长度都是n+1。
(2)平均查找长度相同。
在n 个位置上都可能成功。
(3)平均查找长度不相同。
前者在某个位置上(1<=i<=n)查找成功时,和关键字K 相等的记录是持续的,而后者要查找完顺序表的全数记录。
在查找和排序算法中,监视哨的作用是什么?【解答】监视哨的作用是免去查找进程中每次都要检测整个表是不是查找完毕,提高了查找效率。
用分块查找法,有2000项的表分成多少块最理想?每块的理想长度是多少?假设每块长度为25 ,平均查找长度是多少?【解答】分成45块,每块的理想长度为45(最后一块长20)。
假设每块长25,那么平均查找长度为ASL=(80+1)/2+(25+1)/2=(顺序查找确信块),或ASL=19(折半查找确信块)。
用不同的输入顺序输入n 个关键字,可能构造出的二叉排序树具有多少种不同形态? 【解答】 证明假设二叉排序树中的一个结点存在两个小孩,那么它的中序后继结点没有左小孩,中序前驱结点没有右小孩。
【证明】依照中序遍历的概念,该结点的中序后继是其右子树上按中序遍历的第一个结点,即右子树上值最小的结点:叶子结点或仅有右子树的结点,没有左小孩;而其中序前驱是其左子树上按中序遍历的最后个结点,即左子树上值最大的结点:叶子结点或仅有左子树的结点,没有右小孩。
命题得证。
关于一个高度为h 的A VL 树,其最少结点数是多少?反之,关于一个有n 个结点的A VL 树, 其最大高度是多少? 最小高度是多少?【解答】设以N h 表示深度为h 的A VL 树中含有的最少结点数。
数据结构第九章查找习题解答
第九章查找 习题解答9.5 画出对长度为10的有序表进行折半查找的判定树,并求其等概率时查找成功的平均查找长度。
解:求得的判定树如下: 57109643182ASL 成功=(1+2*2+4*3+3*4)/10 =2.99.9 已知如下所示长度为12的表(Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec )(1)试按表中元素的顺序依次插入一查初始为空的二叉排序树,画出插入完成之后的二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。
(2)若对表中元素先进行排序构成有序表,求在等概率的情况下对此有序表进行折半查找时查找成功的平均查找长度。
解:(1)求得的二叉排序树如下图所示:JanFeb MarApr Aug Dec June July MaySeptOctNov在等概率情况下查找成功的平均查找长度为:ASL 成功=(1+2*2+3*3+4*3+5*2+6*1)/12=42/12=3.5(2)分析:对表中元素进行排序后,其实就变成了对长度为12的有序表进行折半查找了,那么在等概率的情况下的平均查找长度只要根据折半查找的判定树就很容易求出。
长度为12的有序表进行折半查找的判定树如下图所示:681211754193210所以可求出:ASL 成功=(1+2*2+4*3+5*4)/12=37/129.19 选取哈希函数H(k)=(3k) MOD 11。
用开放定址法处理冲突,di=i((7k)MOD 10+1)(i=1,2,3,…)。
试在0~10的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)造哈希表,并求等概率情况下查找成功时的平均查找长度。
解:因为H(22)=0;H(41)=2;H(53)=5;H(46)=6;H(30)=2;H 1(30)=3;H(13)=6;H 1(13)=8;H(01)=3;H 1(01)=0;H 2(01)=8;H 3(01)=5;H 4(01)=2;H 5(01)=10H(67)=3;H 1(67)=2;H 2(67)=1所以:构造的哈希表如下图所示:并求得等概率情况下查找成功的平均查找长度为:ASL 成功=(1*4+2*2+3+6)/8=17/89.21 在地址空间为0~16的散列区中,对以下关键字序列构造两哈希表: (Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec )(1)用线性探测开放定址法处理冲突;(2)用链地址法处理。
第9章参考答案
第九章第一节参考答案跟踪练习:1、D2、C3、A4、C5、B当堂达标:1、磁铁的两端磁性强,所以吸引的大头针多;大头针被磁化,所以吸住一串大头针。
2、用一块磁铁靠近这三根棒:(1)不被吸引的是铜棒(2)只被吸引的是铁棒(3)被吸引,调换方向后又排斥的是磁铁棒3、ABC4、摩擦起电吸引灰尘,棋子和棋盘都是磁体。
5、喇叭里有磁铁,靠近后会减弱磁带的磁性。
6、同名磁极互相排斥,力可以改物体的运动状态。
第九章第二节参考答案跟踪练习一:1、D2、C3、略跟踪练习二:1、A2、(1)第四种说法(2)当信鸽飞行途中遇到雷雨和飞经电视发射塔附近时,由于这些区域的地磁场会受到干扰,扰乱了信鸽对地磁场的正确感知,使信鸽迷失方向。
(3)对比的方法当堂达标:1、BD2、地磁场,N3、B4、B5、排斥6、大磁体,不是7、磁感线,N极,S极8、办法:将铁屑撒在种子里并搅拌均匀,使铁屑吸附在杂草种子上,然后用磁铁将铁屑和杂草种子一起从混合种子中吸出来。
道理:磁铁具有吸引铁的性质。
9、(1)应多做几次实验,观察小磁针静止时,是否总是指向某一方向(2)小磁针静止时,N极所指的方向应是“月磁”的南极。
第九章第三节参考答案跟踪练习一:1、C跟踪练习二:1、B2、3、4 略当堂达标:1、A2、A3、C4、B5、D6、N,负,N7、通电导体周围有磁场,正第九章第四节参考答案跟踪练习一:1、D2、D3、C跟踪练习二:1、B2、D3、A4、铁芯;有电流通过时有磁性,没有电流时就失去磁性;磁化;磁性;铁芯;螺线管5、漆包线绕过软铁棒形成一个螺线管,连到电池组的两极上形成一个电磁铁,将地上的铁钉吸引出来。
当堂达标:1、b,变亮,上2、将插有细铁芯的电磁铁靠近铁钉,记下吸引铁钉的个数,再将插有粗铁芯的电磁铁靠近铁钉,记下吸引铁钉的个数。
比较两次吸引铁钉的多少,吸引的铁钉越多,磁性越强。
3、N,重力,二力平衡,磨擦4、(2)N,(3)左,大,大(4)强,多,强,第九章第五节参考答案第九章第六节参考答案学点一: 1、力 2、电流的方向磁感线的方向跟踪练习1: 1、ABD 2、下下上学点二:两部分转子定子向上向下向上向下电流的方向向上向下通电线圈在磁场中受力转动的原理跟踪练习2: 1、金属半环闭合电路自动2、D3、C学点三:直流电动机交流电动机电能机械能1、C2、热能机械能达标检测: 1、电流方向磁感线的方向 b和c2、C3、C4、ABC第九章第七节参考答案学点一:奥斯特法拉第火力发电、水力发电、风力发电产生感应电流的条件:闭合电路的一部分导体在磁场中做切割磁感线时,导体中就产生电流.导体运动的方向磁感线的方向电磁感应现象感应电流跟踪练习一1、机械能电能机械能电能2、C3、A4、A5、B学点二1、线圈磁体电刷等或转子定子电刷换向器等2、线圈转动越快,指针摆动频率越快,偏转幅度越大3、转速越大,灯泡越亮4、电流方向周期变化的电流5、在交变电流中,电流在每秒内周期性变化的次数叫做频率单位赫兹符号Hz 50 Hz6、A 、 B 、没有、 B 、A 、没有跟踪练习二1、D2、C E达标检测1、C2、B3、a、导体沿磁感线方向运动时,不能产生感应电流b、磁感线方向相同时,导体切割磁力线的运动方向影响感应电流的方向c、导体静止时不会产生感应电流d、导体运动方向相同时,磁感线的方向影响电流的方向。
第9章习题参考答案
第9章习题参考答案第9章习题解答1.思考题(1)VB对象的3要素是指什么?它们的作用是什么?答:对象的属性、方法、事件就称为对象的三要素。
1)属性属性描述对象的性质或特征,即该对象是什么样的。
2)方法方法反映对象的行为,即该对象会干什么。
3)事件事件指明对象在什么条件下发生什么事情,即在什么条件下执行哪段代码。
(2)什么是变量的作用域?作用域有哪些类型?什么是变量的生存期?生存期有哪些类型?答:1)变量的作用域是指变量的有效范围。
2)根据作用域,变量可分为局部变量、窗体级变量、模块级变量、全局变量。
局部变量:在过程体内部定义,其作用域是从定义起到所在语句块或过程结束为止的局部范围,其他地方不能使用。
窗体级变量:是在窗体代码的通用声明区用Dim或Private关键字定义的变量,它不属于该窗体的任何过程,可以被本窗体内的所有过程访问,而不能为其他窗体或模块使用。
窗体级变量与窗体的生存期一样,只要窗体不消失,它就不消失。
模块级变量:与窗体级变量同级别,它是在模块的“通用声明”区用Dim或Private关键字定义的变量。
它不属于该模块的任何过程,可以被本模块内的所有过程访问,而不能用在其他模块或窗体中。
全局变量:是在窗体或模块的通用声明区用Public关键字进行定义的变量,它在整个工程的所有过程中均可使用,且在应用程序运行过程中一直存在。
3)变量的生存期表示它可以存储值的时间周期。
在生存期内变量的值可以更改,但变量总是存储某些值。
即指在程序执行的动态过程中,变量在哪个阶段是存在的。
4)局部变量根据生存期分为动态局部变量和静态局部变量,两者的区别是:(a)动态局部变量的生存期是:程序执行到定义该变量的Dim语句时,在内存建立起该变量,此时该变量“诞生”了;程序继续往下执行到该变量所在的程序块(或过程)结束时,该变量“死亡”,其代表的值也不复存在。
如果该变量所在过程再次执行,再次执行到定义该变量的Dim语句则一个新的变量“诞生”,与上次已“死亡”的同名的变量毫无关系。
数据结构第九章--查找-习题及答案
第九章查找一、选择题1.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( )。
A. (n-1)/2 B. n/2 C. (n+1)/2 D. n2. 下面关于二分查找的叙述正确的是 ( )A. 表必须有序,表可以顺序方式存储,也可以链表方式存储 C. 表必须有序,而且只能从小到大排列B. 表必须有序且表中数据必须是整型,实型或字符型 D. 表必须有序,且表只能以顺序方式存储3. 用二分(对半)查找表的元素的速度比用顺序法( )A.必然快 B. 必然慢 C. 相等 D. 不能确定4. 具有12个关键字的有序表,折半查找的平均查找长度()A. 3.1B. 4C. 2.5D. 55.当采用分块查找时,数据的组织方式为 ( )A.数据分成若干块,每块内数据有序B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D. 数据分成若干块,每块(除最后一块外)中数据个数需相同6. 二叉查找树的查找效率与二叉树的( (1))有关, 在 ((2))时其查找效率最低(1): A. 高度 B. 结点的多少 C. 树型 D. 结点的位置(2): A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。
7. 对大小均为n的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找失败,它们的平均查找长度是((1)) ,对于查找成功,他们的平均查找长度是((2))供选择的答案:A. 相同的B.不同的9.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( ) A.(100,80, 90, 60, 120,110,130) B.(100,120,110,130,80, 60, 90)C.(100,60, 80, 90, 120,110,130)D. (100,80, 60, 90, 120,130,110)10. 在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0右孩子的平衡因子为1,则应作( ) 型调整以使其平衡。
数据结构第九章查找练习及答案
数据结构第九章查找练习及答案一、选择题1、对线性表进行二分查找时,要求线性表必须()A、以顺序方式存储B、以链表方式存储C、以顺序方式存储,且结点按关键字有序排列D、以链表方式存储,且结点按关键字有序排列2、采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为()A、nB、n/2C、(n+1)/2D、(n-1)/23、采用二分查找方法查找长度为n的线性表时,每个元素的平均查找长度为()A、n2B、nlog2nC、nD、log2n4、二分查找和二叉排序树的时间性能()A、相同B、不相同C、有时相同D、有时不相同5、有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当二分查找值为82的结点时,()次比较后查找成功。
A、1B、2C、4D、86、哈希表长m=14,哈希表函数H(key)=key%11,表中已有4个结点:ADDR(15)=4,ADDR(38)=5;ADDR(61)=6;ADDR(84)=7;其余地址为空,如果用二次探测再散列处理冲突,关键字为49的结点的地址是()A、8B、3C、5D、97、一个长度为12的有序表,按二分查找法对该表进行查找,在表内每个元素等概率情况下查找成功所需的平均比较次数()A、35/12B、37/12C、39/12D、43/128、用分块查找时,若线性表中共有625个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应分()结点最佳。
A、10B、25C、6D、6259、如果要求一个线性表既能较快的查找,又能适应动态变化的要求,可以采用()查找方法。
A、分块B、顺序C、二分D、散列10、有100个元素,用折半查找法进行查找时,最大比较次数是()A、25B、50C、10D、711、有100个元素,用折半查找法进行查找时,最小比较次数是()A、7B、4C、2D、112、散列函数有一个共同性质,即函数值应当以()取其值域的每个值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第九章查找 习题解答
9.5 画出对长度为10的有序表进行折半查找的判定树,并求其等概率时查找成功的平
均查找长度。
解:求得的判定树如下:
5
710
9
6
4
3
1
8
2
ASL 成功=(1+2*2+4*3+3*4)/10 =2.9 9.9
已知如下所示长度为12的表(Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec )
(1)试按表中元素的顺序依次插入一查初始为空的二叉排序树,画出插入完成之后的二
叉排序树,并求其在等概率的情况下查找成功的平均查找长度。
(2)若对表中元素先进行排序构成有序表,求在等概率的情况下对此有序表进行折半查
找时查找成功的平均查找长度。
解:(1)求得的二叉排序树如下图所示:
Jan
Feb Mar
Apr Aug Dec June July
May
Sept
Oct
Nov
在等概率情况下查找成功的平均查找长度为:
ASL 成功=(1+2*2+3*3+4*3+5*2+6*1)/12=42/12=3.5
(2)
分析:对表中元素进行排序后,其实就变成了对长度为12的有序表进行折半查找了,那么在等概率的情况下的平均查找长度只要根据折半查找的判定树就很容易求出。
长度为12的有序表进行折半查找的判定树如下图所示:
6
8
12
11
7
5
4
1
9
32
10
所以可求出:
ASL 成功=(1+2*2+4*3+5*4)/12=37/12
9.19 选取哈希函数H(k)=(3k) MOD 11。
用开放定址法处理冲突,di=i((7k)MOD 10
+1)(i=1,2,3,…)。
试在0~10的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)造哈希表,并求等概率情况下查找成功时的平均查找长度。
解:因为H(22)=0;
H(41)=2; H(53)=5; H(46)=6;
H(30)=2;H 1(30)=3; H(13)=6;H 1(13)=8;
H(01)=3;H 1(01)=0;H 2(01)=8;H 3(01)=5;H 4(01)=2;H 5(01)=10 H(67)=3;H 1(67)=2;H 2(67)=1 所以:构造的哈希表如下图所示:
并求得等概率情况下查找成功的平均查找长度为: ASL 成功=(1*4+2*2+3+6)/8=17/8
9.21 在地址空间为0~16的散列区中,对以下关键字序列构造两哈希表: (Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec ) (1)用线性探测开放定址法处理冲突; (2)用链地址法处理。
并分别求这两个哈希表在等概率情况下查找成功和不成功时的平均查找长度。
设哈希函数为H(x)=i/2取整,其中i 为关键字中第一个字母在字母表中的序号。
解:(1)因为:
H(Jan)=5; H(Feb)=3; H(Mar)=6; H(Apr)=0;
H(May)=6; H 1(May)=7;
H(June)=5;H 1(June)=6;H 2(June)=7;H 3(June)=8
H(July)=5;H 1(July)=6;H 2(July)=7;H 3(July)=8;H 4(July)=9; H(Aug)=0; H 1(Aug)=1
H(Sep)=9; H 1(Sep)=10
H(Oct)=7; H 1(Oct)=8;H 2(Oct)=9; H 3(Oct)=10; H 4(Oct)=11;
H(Nov)=7; H 1(Nov)=8;H 2(Nov)=9; H 3(Nov)=10; H 4(Nov)=11;H 5(Nov)=12; H(Dec)=2
所以,用线性探测开放定址法处理冲突构造的哈希表如下图所示:
并求得:ASL 成功=(1*5+2*3+4+5*2+6)/12=31/12
ASL 不成功=(5+4+3+2+1+9+8+7+6+5+4+3+2+1)/14=60/14 (2)用链地址法处理冲突构造的哈希表如下图所示:
并求得:
ASL 成功=(1*7+2*4+3)/12=18/12
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
ASL不成功=(1*3+2*3+3)14=12/14
9.25 假设顺序表按关键字自大至小有序,试改写教科书9.1.1节中的顺序查找算法,
将监视哨设在高下标端。
然后画出描述此查找过程的判定树,分别求出等概率下查找成功和不成功的平均查找长度。
解:(1)顺序表的存储结构描述:
Typedef struct {
Keytype key;
}Elemtype; //记录类型;
typedef struct {
Elemtype *elem;
int length;
}SSTable; //顺序表类型;
按要求所得算法如下:
int Search(SSTable ST, Keytype key)
{ ST.elem[ST.length].key=key;
for (i=0; key<ST.elem[i].key; i++);
if (i==ST.length) return 0;
else if (key==ST.elem[i].key) return i;
else return 0;
}
(2)按此查找过程的判定树如下图所示:
1
2
3
n
(3)等概率下的查找成功与查找不成功的平均查找长度分别为:、
ASL成功=(1+2+3+….+n)/n=(n+1)/2
ALS不成功=(1+2+3+…+n)/(n+1)=(n+2)/2
补充:
设散列表的长度为13,散列函数为H(K)=K%13,给定的关键字序列为: 19,14,23,01,68,20,84,27,55,11,10,79。
试画出分别用拉链法和线性探查法解决冲突时所构造的散列表,并求出在等概率情况下,求这两种方法的查找成功和查找不成功的平均查找长度。
解:(1)用拉链法处理冲突:
因为:H(19)=6;H(14)=1;H(23)=10;H(01)=1;H(68)=3;H(20)=7;
H(84)=6;H(27)=1;H(55)=3;H(11)=11;H(10)=10;H(79)=1
所以,构造的哈希表如下图所示:
ASL 不成功=(4+2*3+1*2)/13=12/13 (2)用线性探测再散列法处理冲突: 因为: H(19)=6; H(14)=1; H(23)=10;
H(01)=1; H 1(01)=2; H(68)=3; H(20)=7;
H(84)=6; H 1(84)=7; H 2(84)=8;
H(27)=1;H 1(27)=2; H 2(27)=3; H 3(27)=4; H(55)=3; H 1(55)=4; H 2(55)=5; H(11)=11;
H(10)=10; H 1(10)=11; H 2(10)=12;
H(79)=1; H 1(79)=2; H 2(79)=3; H 3(79)=4; H 4(79)=5; H 5(79)=6; H 6(79)=7; H 7(79)=8; H 8(79)=9
所以,构造的哈希表如下图所示:
0 1 2 3 4 5 6 7 8 9 10 11 12
并求得:
ASL成功=(1*6+2+3*3+4+9)/12=30/12
ASL不成功=(1+13+12+11+10+9+8+7+6+5+4+3+2)/13=7。