1、1第九章 查找1.若有 18 个元素的有序表存放在一维数组 A19中,第一个元素放 A1中,现进行二分查找,则查找 A3的比较序列的下标依次为( )A. 1,2,3 B. 9,5,2,3C. 9,5,3 D. 9,4,2,32设二叉排序树中有 n 个结点,则在二叉排序树的平均平均查找长度为( ) 。A. O(1) B. O(log2n) C. O(n) D. O(n2)5设有序表中有 1000 个元素,则用二分查找查找元素 X 最多需要比较( )次。A. 25 B. 10 C. 7 D. 16顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为( ) 。A. O(n) B. O(n2)
2、C. O(n1/2) D. O(1og2n)8 ( )二叉排序树可以得到一个从小到大的有序序列。A. 先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历9设一组初始记录关键字序列为(13,18,24,35,47,50,62,83,90,115,134),则利用二分法查找关键字 90 需要比较的关键字个数为( ) 。A. 1 B. 2 C. 3 D. 410设某散列表的长度为 100,散列函数 H(k)=k % P,则 P 通常情况下最好选择( ) 。A. 99 B. 97 C. 91 D. 9311在二叉排序树中插入一个关键字值的平均时间复杂度为( ) 。A. O(n) B. O(1og
3、2n) C. O(nlog2n) D. O(n2)12设一个顺序有序表 A1:14中有 14 个元素,则采用二分法查找元素 A4的过程中比较元素的顺序为( )。A. A1,A2,A3,A4 B.A1,A14,A7,A4C.A7,A3,A5,A4 D. A7,A5 ,A3,A413设散列表中有 m 个存储单元,散列函数 H(key)= key % p,则 p 最好选择( ) 。A. 小于等于 m 的最大奇数 B. 小于等于 m 的最大素数C. 小于等于 m 的最大偶数 D. 小于等于 m 的最大合数14设顺序表的长度为 n,则顺序查找的平均比较次数为( ) 。A. n B. n/2 C. (n+
4、1)/2 D. (n-1)/215设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用二分法查找值为 24 的元素需要经过( )次比较。A. 1 B. 2 C. 3 D. 417设有一组初始记录关键字序列为(34,76,45,18,26,54,92),则由这组记录关键字生成的二叉排序树的深度为( ) 。A. 4 B. 5 C. 6 D. 718二叉排序树中左子树上所有结点的值均( )根结点的值。A. C. = D. !=226对一棵二叉排序树采用中根遍历进行输出的数据一定是( )A.递增或递减序列 B.递减序列 C.无序序列 D.递增序列27一个有序表为1,3,9,12
5、,32,41,45,62,75,77,82,95,100,当二分查找值为 82 的结点时,查找成功时的比较次数为( )A.1 B.2 C.4 D.828若构造一棵具有 n 个结点的二叉排序树,最坏的情况下其深度不超过( )A. B. n C. D. n+12n 2130在对查找表的查找过程中,若被查找的数据元素不存在,则把该数据元素插入到集合中。这种方式主要适合于( )A.静态查找表 B.动态查找表C.静态查找表与动态查找表 D.静态查找表或动态查找表31设一组记录的关键字 key 值为62,50,14,28,19,35,47,56,83,散列函数为 H(key)=key mod 13,则它的
6、开散列表中散列地址为 1 的链中的结点个数是( )A1 B.2 C3 D.432已知一个有序表为(13,18,24,35,47,50,62,83,90,115,134) ,当二分检索值为 90 的元素时,检索成功需比较的次数是( )A.1 B.2 C.3 D.436设有 100 个元素,用二分法查找时,最大比较次数是( ) 。A25 B7 C10 D137设有 1000 个元素,用二分法查找时,最小比较次数为( )A0 B1 C10 D50040在一个有 N 个元素的有序单链表中查找具有给定关键字的结点,平均情况下的时间复杂性为( B )A.O(1) B.O(N) C.0(N 2) D.O(N
7、logN)41对线性表进行二分查找时,要求线性表必须( )A.以顺序方式存储 B.以顺序方式存储,且数据元素有序 C.以链接方式存储 D.以链接方式存储,且数据元素有序42下列二叉排序树中查找效率最高的是( ) A.平衡二叉树 B.二叉查找树 C.没有左子树的二叉排序树 D.没有右子树的二叉排序树44分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( ) A.(100,80,90,60,120,110,130) B.(100,120,110,130,80,60,90)C.(100,60,80,90, 20,110,130) D.(100,80,60,90,120,130,11
8、0)50设哈希表长 M=14,哈希函数 H(KEY)=KEY MOD 11。表中已有 4 个结点:ADDR(15)=4, ADDR(38)=5,ADDR(61)=6,ADDR(84)=7,其余地址为空,如用二次探测再散列处理冲突,关键字为 49 的结点的地址是( )。 A. 8 B. 3 C. 5 D. 952将 10 个元素散列到 100000 个单元的哈希表中,则( )产生冲突。A. 一定会 B. 一定不会 C. 仍可能会355二叉查找树的查找效率与二叉树的树型有关, 在 ( )时其查找效率最低。A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。64. 对于长度为 18
9、的顺序存储的有序表,若采用二分查找,则查找第 15 个元素的查找长度为 ( ) 。 A. 3 B. 4 C. 5 D. 6二、填空题7根据初始关键字序列(19,22,01,38,10)建立的二叉排序树的高度为_。12设二叉排序树的高度为 h,则在该树中查找关键字 key 最多需要比较_次。13设散列表的长度为 8,散列函数 H(k)=k % 7,用线性探测法解决冲突,则根据一组初始关键字序列(8,15,16,22,30,32)构造出的散列表的平均查找长度是_。16解决散列表冲突的两种方法是_和_。18从一棵二叉搜索树中查找一个元素时,若元素的值等于根结点的值,则表明_,若元素的值小于根结点的值
10、,则继续向_查找,若元素的大于根结点的值,则继续向_查找。20二叉搜索树的中序遍历得到的结点序列为_ _。 27在一棵二叉排序树上按_遍历得到的结点序列是一个有序序列。28实现二分查找的存储结构仅限于顺序存储结构,且其中元素排列必须是_的。31一棵平衡二叉树中任一结点的平衡因子只可能是_。32二分查找的时间复杂度为_。41在线性表的_存储中,对每一个元素只能采用顺序查找。48对于二分查找所对应的判定树,它既是一棵_,又是一棵_。64. 平衡二叉树又称_,其定义是_。69. 在含有 n 个结点的二叉排序树中查找一个关键字,进行关键字比较次数最大值是 。72. 动态查找表和静态查找表的重要区别在于
11、前者包含有_和_运算,而后者不包含这两种运算。83. 在一棵二叉排序树中,每个分支结点的左子树上所有结点的值一定 _ 该结点的值,右子树上所有结点的值一定 _ 该结点的值。86. 向一棵二叉排序树中插入一个元素时,若元素的值小于根结点的值,则接着向根结点的 _ 插入,若元素的值大于根结点的值,则接着向根结点的 _ 插入。 89. 在一棵平衡二叉排序树中,每个结点的左子树高度与右子树高度之差的绝对值不超过 _ 。四、简答题6对长度为 20 的有序表进行二分查找,试画出它的一棵判定树48一个线性表为 B=(12,23,45,57,20,03,78,31,15,36) ,设散列表为 HT012,散列
12、函数为 H(key)= key % 13 并用线性探查法解决冲突,请画出散列表,并计算等概率情况下查找成功的平均查找长度。21.一棵二叉排序树结构如下,各结点的值从小到大依次为 1-9,请标出各结点的值。22. 在查找和排序算法中,监视哨的作用是什么?23. 输入一个正整数序列(53,17,12,66,58,70,87,25,56,60),试完成下列各题。(1)按次序构造一棵二叉排序树 BS。(2) 依此二叉排序树,如何得到一个从大到小的有序序列?(2)画出在此二叉排序树中删除“66”后的树结构。5五、应用题3已知待散列的线性表为(36,15,40,63,22) ,散列用的一维地址空间为06,
13、假定选用的散列函数是 H(K)= K mod 7,若发生冲突采用线性探查法处理,试:(1)计算出每一个元素的散列地址并在下图中填写出散列表: 0 1 2 3 4 5 6(2)求出在查找每一个元素概率相等情况下的平均查找长度。11依次输入表 30, 15, 28, 20, 24, 10, 12, 68, 35, 50, 46, 55 中的元素,生成一棵二叉搜索树。试画出生成之后的二叉搜索树;对该二叉搜索树进行中序遍历,试写出遍历序列。假定每个元素的查找概率相等,试计算该二叉搜索树的平均查找长度。18假定一个待散列存储的线性表为(32,75,29,63,48,94,25,46,18,70),散列地
14、址空间为 HT13,若采用除留余数法构造散列函数和线性探查法处理冲突,试求出每一元素的散列地址,画出最后得到的散列表,求出平均查找长度。619假定一个待散列存储的线性表为(32,75,29,63,48,94,25,46,18,70),散列地址空间为 HT11,若采用除留余数法构造散列函数和链接法处理冲突,试求出每一元素的散列地址,画出最后得到的散列表,求出平均查找长度。六、程序填空题(或算法阅读题)1.二叉搜索树的查找递归算法:bool Find(BTreeNode* BST,ElemType /查找失败else if (item=BST-data)item=BST-data;/查找成功return _;else if(itemdata)return Find(_,item);else return Find(_,item);/if七、算法设计题1. 设有一组初始记录关键字序列(K 1,K 2,K n) ,要求设计一个算法能够在O(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于 Ki,右半部分的每个关键字均大于等于 Ki。73设计在顺序有序表中实现二分查找的算法。6设计在二叉排序树上查找结点 X 的算法。