数据结构第8章查找练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单选题
1.下列查找方法中,不属于动态的查找方法是( )。
A .二叉排序树法
B .平衡树法
C .散列法
D .二分查找法
2.适用于静态的查找方法为( )。
A .二分查找、二叉排序树查找
B .二分查找、索引顺序表查找
C .二叉排序树查找、索引顺序表查找
D .二叉排序树查找、散列法查找
3.静态查找表与动态查找表二者的根本差别在于( )。
A .它们的逻辑结构不一样
B .施加在其上的操作不同
C .所包含的数据元素的类型不一样
D .存储实现不一样
4.对长度为10的顺序表进行查找,若查找前面5个元素的概率相同,均为1/8,查找后面5个元素的概率相同,均为3/40,则查找任一元素的平均查找长度为( )。
A .5.5
B .5
C .39/8
D .19/4
5.( )存储方式适用于折半查找。
A .键值有序的单链表
B .键值有序的顺序表
C .键值有序的双链表
D .键值无序的顺序表
6.对线性表进行二分查找时,要求线性表必须( )。
A .以顺序方式存储
B .以链接方式存储
C .顺序存储,且结点按关键字有序排序
D .链式存储,且结点按关键字有序排序
7.在索引顺序表中查找一个元素,可用的且最快的方法是( )。
A .用顺序查找法确定元素所在块,再用顺序查找法在相应块中查找
B .用顺序查找法确定元素所在块,再用二分查找法在相应块中查找
C .用二分查找法确定元素所在块,再用顺序查找法在相应块中查找
D .用二分查找法确定元素所在块,再用二分查找法在相应块中查找
8.在索引查找中,若主表长度为144,它被均分为12子表,每个子表的长度均为12,则索引查找的平均查找长度为( )。
A .13
B .24
C .12
D .79
9.由同一关键字集合构造的各棵二叉排序树( )。
A .形态和平均查找长度都不一定相同
B .形态不一定相同,但平均查找长度相同
C .形态和平均查找长度都相同
D .形态相同,但平均查找长度不一定相同
10.对二叉排序树进行( ),可以得到各结点键值的递增序列。
A .先根遍历
B .中根遍历
C .层次遍历
D .后根遍历
11.下述序列中,哪个可能是在二叉排序树上查找35时所比较过的关键字序列?
A .2,25,40,39,53,34,35
B .25,39,2,40,53,34,35
C .53,40,2,25,34,39,35
D .39,25,40,53,34,2,35
12.在A VL 树中,每个结点的平衡因子的取值范围是( )。
A .-1~1
B .-2~2
C .1~2
D .0~1
13.在AVL 树中,任一结点的( )。
A .左、右子树的高度均相同
B .左、右子树高度差的绝对值不超过1
C .左、右子树的结点数均相同
D .左、右子树结点数差的绝对值不超过1
14.下面关于B 树和B +树的叙述中,不正确的是
A .都是平衡的多叉树
B .都是可用于文件的索引结构
C .都能有效地支持顺序检索
D .都能有效地支持随机检索
15.右图是一棵( )。
2822221915100528
2610
A.4阶B-树B.4阶B+树C.3阶B-树D.3阶B+树16.对包含n个关键字的散列表进行检索,平均检索长度是( )。
A.O(log2n) B.O(n) C.不直接依赖于n D.O(nlog2n) 17.在散列查找中,平均查找长度主要与( )有关。
A.散列表长度B.散列元素的个数C.装填因子D.处理冲突方法18.要解决散列引起的冲突问题,常采用的方法有( )。
A.数字分析法、平方取中法B.数字分析法、线性探测法
C.二次探测法、平方取中法D.二次探测法、链地址法
19.从理论上讲,将数据以( )结构存放,查找一个数据的时间不依赖于数据的个数n。
A.二叉查找树B.链表C.散列表D.顺序表
20.假定有k个关键字互为同义词,若用线性探测法把这k个关键字存入散列表中,至少要进行( )次探侧。
A.k-1 B.k C.k+1 D.k(k+1)/2
二、判断题
1.顺序查找法不仅可用于顺序表上的查找,也可用于链表上的查找。
2.二分查找所对应的判定树,是一棵理想平衡的二叉排序树。
3.二叉排序树的形态与关键字的输入序列有关,但平衡二叉排序树是相同的。
4.如果根结点的左子树和右子树高度差不超过1,则该二叉树是平衡二叉树。
5.二叉排序树上,以根到任一结点的路径为界,则:路径左边结点<路径结点<路径右边结点。
6.在二叉排序树中,即使删除一个结点后马上再插入该结点,该二叉排序树的形态也可能不同。
7.用线性探测法解决突出时,同义词在散列表中是相邻的。
8.不论数据如何组织,分别在10000个结点和10个结点的查找表中进行查找,前者的平均查找长度肯定比后者大。
9.在开散列表中不会出现堆积现象。
10.开散列表和闭散列表的装填因子都可大于、等于或小于1。
三、填空题
1.评价查找效率的主要标准是____。
2.查找表的逻辑结构是____。
集合
3.对长度为100的顺序表,在等概率情况下,查找成功时的平均查找长度为____,在查找不成功时的平均查找长度为____。
4.在150个结点的有序表中二分法查找,不论成功与否,键值比较次数最多为____。
5.索引顺序表上的查找分两个阶段:____、____。
6.从n个结点的二叉排序树中查找一个元素,平均时间复杂性大致为____。
7.散列表中同义词是指____。
8.散列表既是一种____方式又是一种____方法。
9.散列表中要解决的两个主要问题是:____、____。
10.散列表的冲突处理方法有____和____两种,对应的散列表分别称为开散列表和闭散列表。
四、应用题、综合题
4.对关键字序列{11,78,10,34,47,2,59,21}构造散列表,取散列函数为H(K)=K%11,用链地址法解决冲突,画出相应的散列表,并分别求查找成功和不成功时的平均查找长度。
4.根据元素插入的先后次序不同,可构成多种形态的二叉排序树。
请画出4棵含1,2,3,4四个元素且以1为根、深度为4的二叉排序树。
4.将一组键值{28,21,41,6,12,70}插入到散列表中,散列函数为H(key)=key%5,
1)计算各关键字的散列地址;
2)画出相应的开散列表;
3)计算等概率下查找成功时的平均查找长度。
4.对关键字序列(25, 16, 34, 39, 28, 56),
1)画出按此序列生成的二叉排序树。
2)计算等概率下查找成功时的平均查找长度。
4.已知一个顺序存储的有序表为(15,26,34,39,45,56,58,63,74,76),
1)画出对应的二分查找判定树;
2)计算等概率时查找成功的平均查找长度。
4.将一组键值{28,21,41,6,12,70,69}插入到表长为9的散列表中,散列函数采用除余法,用线性探查法解决冲突,
1)计算各关键字的散列地址;
2)画出相应的闭散列表;
3)计算等概率下查找成功时的平均查找长度。
4.将一组键值{18,21,41,6,12,67}插入到散列表中,散列函数为H(key)=key%7,
1)计算各关键字的散列地址;
2)画出相应的开散列表;
3)计算等概率下查找成功时的平均查找长度。
1.已知一个顺序存储的有序表为(15,26,34,39,45,56,58,63,74,76),试画出对应的二分查找判定树,求出其平均查找长度。
平均查找长度等于29/10
2.假定一个线性表为(38,52,25,74,68,16,30,54,90,72),画出按线性表中元素的次序生成的一棵二叉排序树,求出查找成功和不成功的平均查找长度(指关键字比较次数)。
若查找键值20,需要进行几次关键字比较?
成功时平均查找长度32/10;比较3次:38、25、16
3.请画出从下面的二叉排序树中删除关键码40后的结果。
20
1140
62450
835
4560
3
28
4.对关键字序列{23,45,14,17,9,29,37,18}构造散列表,取散列地址为HT[0..6],散列函数为H(K)=K%7,用拉链法解决冲突,画出相应的散列表,并求在等概率下,查找成功时的平均查找长度。
5.已知散列函数为H(k)=k%11,关键值序列为25、21、41、6、12、69、20、15、22。
6.用线性探测法处理冲突,散列表长度为12。
试画出该散列表,并分别计算查找成功和不成功时关键字的平均比较次数。
7.在包含n个关键字的线性表里进行顺序查找,若查找第i个关键字的概率为p i,p i如下分布:p1=1/2,p2=1/4,......,p n-1=1/2n-1,p n=1/2n。
求成功检索的平均比较次数。
8.若对有n个元素的有序顺序表和无序顺序表进行顺序搜索,试就下列三种情况分别讨论两者在等搜索概率时的平均搜索长度是否相同?
(1).搜索失败;
(2).搜索成功, 且表中只有一个关键码等于给定值k的对象;
(3).搜索成功, 且表中有若干个关键码等于给定值k的对象, 要求一次搜索找
出所有对象。
解:(1) 不同。
因为有序顺序表搜索到其关键码比要查找值大的对象时就停止搜索,报告失败信息,不必搜索到表尾;而无序顺序表必须搜索到表尾才能断定搜
索失败。
(2) 相同。
搜索到表中对象的关键码等于给定值时就停止搜索,报告成功信息。
(3) 不同。
有序顺序表中关键码相等的对象相继排列在一起,只要搜索到第一个就
可以连续搜索到其它关键码相同的对象。
而无序顺序表必须搜索全部表
中对象才能确定相同关键码的对象都找了出来,所需时间就不相同了。
五、程序分析与填空
1.编写算法,返回二叉排序树中的关键字最大(或最小)的结点地址。
提示:关键字最大的结点是“最右下”的结点;关键字最小的结点是“最左下”的结点。
pointer search(bitree t)
{
pointer p;
if(t==NULL)
return NULL; //空树
p=t;
while(p->rchild!==NULL) p=p->rchild; //向右下搜索
return p;
}
2.编写算法,在二叉排序树中查找键值为K的结点。
pointer search(bitree t,keytype K) //递归算法
{
if(t==NULL) return NULL; //空树
if(t->data==K) return t; //找到
else if(t->data>K)
return search(t->lchild,K); //找左子树
else
return search(t->rchild,K); //找右子树
}
=》候选
2.对有n个记录的有序表采用二分查找,其平均查找长度的量级为( )。
A O(n)
B O(n2)
C O(1)
D O(log2n) 2.对长度为n的有序表二分查找,则对所有元素的最长查找长度为( )。
A.⎡log2(n+1)⎤
B. ⎡log2n⎤
C. ⎡n/2⎤
D. ⎡(n+1)/2⎤
2.对长度为n的有序表二分查找,则对所有元素的最长查找长度为( )。
A. ⎣log2(n+1)⎦+1
B. ⎣log2n⎦+1
C. ⎣n/2⎦+1
D. ⎣(n+1)/2⎦+1 2.对长度为100的有序表二分查找,若查找不成功,至少比较( )次。
A、9
B、8
C、7
D、6 6.二分查找法要求查找表中各元素的键值必须是( )排列。
A.递增或递减
B.递增
C.递减
D.无序33.散列存储中,冲突是指( )。
A.两个元素具有相同的序号B.两个记录的关键字相同
C.数据元素过多D.不同关健字值对应相同的存储地址
20.查找表内元素的关键字一定是整型量。
20.静态查找表的检索与修改被分成两个不交叉的阶段分别进行。
20.在n个结点的有序表中进行二分查找,关键字比较次数最多为(n+1)/2。
10.二叉排序树的中序遍历序列是递增的,所以前序或后序遍历序列不可能也是递增的。
20.若两棵二叉排序树的中序序列相同,则它们的形态也相同。
20.在二叉排序树的查找中,能逐步缩小查找范围,故效率肯定比顺序查找快。
20.二叉排序树是用来进行排序的。
20.冲突处理的开放地址法就是当冲突发生后,依次探查冲突地址后面的各地址单元,直到找到一个空单元或所找关键字为止。
10.装填因子对闭散列表的查找效率影响较大,对开散列表影响不大。
10.线性探查法在解决同义词冲突的过程中,可能引起非同义词的冲突。
20.开散列表的查找效率一般高于闭散列表。
20.散列表可从关键字算出存放地址,故查找中实际没有必要进行关键字的比较。
4.等概率情况下,对长度为n的顺序表,查找任一元素的平均查找长度为( )。
A .n B.n+1 C. (n-1)/2 D. (n+1)/2 1.等概率情况下,对长度为n的单链有序表,查找任一元素的平均查找长度为( )。
A.n/2
B.(n+1)/2
C.(n-1)/2
D.n/4
10.在索引查找中,若主表长度为n,它被均分为k个子表,每个子表的长度均为n/k,则索引查找的平均查找长度为( )。
A .n+k B. k+n/k C. (k+n/k)/2 D. (k+n/k)/2+1 3.在索引查找中,若主表长度为n,它被均分为若干个子表,每个子表的长度均为s,则索引查找的平均查找长度为( )。
A. (n+s)/2
B. (n/s+s)/2+1
C. (n+s)/2+1
D. (n/s+s)/2 14.从n个结点的二叉搜索树中查找一个元素,最坏时间复杂性为( )。
A.O(n)
B.O(1)
C.O(log2n)
D.O(n2) 4.按递增顺序输入n个记录所建立的二叉排序树,平均查找长度的量级为( )。
A.O(n)
B.O(nlog2n )
C.O(1)
D.O(log2n) 4.在深度为h的n个元素的二叉排序树中,查找所有元素的最长查找长度为( )。
A.n B.log2n C.(h+1)/2 D.h 4.从n个结点的二叉搜索树中查找一个元素,平均时间复杂性大致为( )。
A.O(n)
B.O(1)
C.O(log2n)
D.O(n2)
4. 向n个结点的二叉搜索树中插入一个元素,时间复杂性大致为( )。
A.O(1)
B.O(log2n )
C.O(n)
D.O(n log2n) 4.根据n个元素建立一棵二叉搜索树,时间复杂性大致为( )。
A.O(n)
B.O(log2n )
C.O(n2)
D.O(n log2n) 5.对包含n个关键字的平衡二叉排序树进行检索,平均检索长度是( )。
A.O(log2n) B.O(n) C.不确定D.○(nlog2n)
8.在索引表中,若一个索引项对应主表中的一条记录,则称此索引为____索引,若对应主表中的若干条记录,则称此索引为____索引。
7.在索引表中,每个索引项至少包含有____域和____域这两项。
9.若对长度n=10000的线性表进行二级索引存储,每级索引表中的索引项是下一级20个记录的索引,则一级索引表的长度为________,二级索引表的长度为________。
11.平衡二叉排序树高度的数量级为________。
O(n)
12.对m阶B_树,每个非根结点的关键字数目最多为____个。
14.在B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度________。
13.对m阶B-树,若某结点因插入新关键字而引起结点分裂,则此结点原有的关键字的个数是_______;
20.线性探测中的堆积现象是指_______________________。
15.散列表中冲突是指_______________________。
10.对关键字集合{1,2,3},所有可能的二叉排序树有________棵。
=》综合
2.在长度为9的有序表二分查找,则等概率时查找成功的平均搜索长度为( )。
A. 20/9
B. 18/9
C. 25/9
D. 22/9
2.对长度为18的有序表二分查找,则查找第15个元素的查找长度为( )。
A、3
B、4
C、5
D、6 2.在关键字序列(12,23,34,45,56,67,78,89,91)中二分查找关键字为89和12的结点时,所需进行的比较次数分别为( )。
A.4,3 B.3,3 C.4,4 D.3,4
2.有一个长度为20的有序表采用二分查找方法进行查找,共有____个元素的查找长度为3。
3.若数组A[1..20]的元素按关键字递增,某个元素x处于A[6]位置,则用二分法查找该元素时所需要比较的数组元素序列为。
7.从有序表(12,18,30,43,56,78,82,95)中分别二分查找43和56时,其查找长度分别为____和____。
3.假定对长度n=50的有序表进行二分查找,则对应的判定树高度为____,判定树中前5层的结点数为____,最后一层的结点数为____。
4.利用逐点插入法建立序列(50,72,43,85,75,20,35,45,65,30)对应的二叉排序树以后,查找元素35要进行( )元素间的比较。
A、4次
B、5次
C、7次
D、10次7.若根据查找表建立长度为m的闭散列表,采用线性探测法处理冲突,假定对一个元素第一次计算的散列地址为d,则下一次的散列地址为( )。
A.d
B.d+1
C.(d+1)/m
D.(d+1)%m
7.若根据查找表建立长度为m的闭散列表,采用二次探测法处理冲突,假定对一个元素第一次计算的散列地址为d,则第四次计算的散列地址为( )。
A.(d+1)%m
B.(d-1)%m
C.(d+4)%m
D.(d-4)%m 7.在采用线性探测法处理冲突的闭散列表上,假定装填因子α的值为0.5,则查找任一元素的平均查找长度为( )。
A、1
B、1.5
C、2
D、2.5 7.在采用链接法处理冲突的开散列表上,假定装填因子α的值为4,则查找任一元素的平均查找长度为( )。
A、3
B、3.5
C、4
D、2.5 38.设一个闭散列表的容量为m,用线性控测法解决冲突,要插入一个键值,若插入成
功,至多要进行______次比较。
39.假定要对长度n=100的线性表进行散列存储,并采用链接法处理冲突,则对于长度m=20的开散列表,每个散列地址的单链表的长度平均为____。
44.在采用线性探测法处理冲突的闭散列表中,假定装填因子为α,则进行成功查找的平均查找长度为____。
45.二次探测法处理冲突,闭散列表的长度为m,若散列地址为d的单元冲突,则以后第五个探查地址为____。
42.在开散列表中插入一个元素的时间复杂性为____,查找一个元素的时间复杂性为
____,假定装填因子为 。
=》较深
3.以二分查找方法从长度为n的有序表中查找一个元素时,平均查找长度约等于____,时间复杂性为____。
5.在高度为4的在A VL树中,最少的结点数是( )。
A、7
B、6
C、5
D、4 21.在一棵高度为5的理想平衡树中,最少含有_____个结点,最多含有_____个结点。
28.对于一棵含有n个关键字的m阶B_树,其最小高度为____,最大高度为____。
29.已知一棵3阶B_树中含有50个关键字,则该树的最小高度为____,最大高度为____。
30.在一棵B_树中,所有叶子结点都处在____上,所有叶子结点中空指针等于所有____总数加1。
32.在对m阶B_树插入元素的过程中,每向一个结点插入一个索引项(叶子结点中的索引项为关键字和空指针)后,若该结点的索引项数等于_______个,则必须把它分裂为________个结点。
26.对m阶B_树,每个非根结点的关键字数目最少为____个,其子树数目最少为____。
31.对m阶B-树,若某结点因删除关键字而导致结点合并,则该结点中原有的关键字的个数是_______。
33.在从m阶的B_树删除元素的过程中,当一个结点被删除掉一个索引项后,所含索引项数等于________个,并且它的左、右兄弟结点中的索引项数均等于________个,则必须进行结点合并。
35.从一棵B_树删除元素的过程中,若最终引起树根结点的合并,则新树比原树的高度________。