数据结构 第九章 查找 作业及答案 下载本文

第九章 查找

一、填空题

1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 。

2. 线性有序表(a1,a2,a3,?,a256)是从小到大排列的,对一个给定的值k,用二分法检索表中与k相等的元素,在查找不成功的情况下,最多需要检索 次。设有100个结点,用二分法查找时,最大比较次数是 。

3. 假设在有序线性表a[1..20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 2 ;比较四次查找成功的结点数为 ,其下标从小到大依次是 ____,平均查找长度为 。

4.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 比较大小。

5. 在各种查找方法中,平均查找长度与结点个数n无关的查找方法是 。 6. 散列法存储的基本思想是由 决定数据的存储地址。

7. 有一个表长为m的散列表,初始状态为空,现将n(n

8、设一哈希表表长M为100 ,用除留余数法构造哈希函数,即H(K)=K MOD P(P<=M), 为使函数具有较好性能,P应选 。

9、在各种查找方法中,平均查找长度与结点个数无关的是 。

10、对线性表进行二分查找时,要求线性表必须以 方式存储,且结点按关键字 排列。 11 在分块查找方法中,首先查找索引,然后再查找相应的 。

12. 顺序查找n个元素的顺序表,若查找成功,则比较关键字的次数最多为_ __次;当使用监视哨时,若查找失败,则比较关键字的次数为__ 。

13.在有序表A[1..12]中,采用二分查找算法查等于A[12]的元素,所比较的元素下标依次为 。

14. 在有序表A[1..20]中,按二分查找方法进行查找,查找长度为5的元素个数是__ _。 15. 已知二叉排序树的左右子树均不为空,则_ _上所有结点的值均小于它的根结点值, 上所有结点的值均大于它的根结点的值。

16、中序遍历二叉排序树得到的序列是 序列(填有序或无序)。

17、从有序表(10,16,25,40,61,28,80,93)中依次二分查找40和61元素时,其查找长度分别为 和 ·

二、单项选择题

1.在表长为n的链表中进行顺序查找,它的平均查找长度为( ) A. ASL=n; B. ASL=(n+1)/2; C. ASL=n+1; D. ASL≈log2(n+1)-1

2.折半查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找表中元素58,则

它将依次与表中( )比较大小,查找结果是失败。

A.20,70,30,50 B.30,88,70,50 C.20,50 D.30,88,50 3.对22个记录的有序表作折半查找,当查找失败时,至少需要比较( )次关键字。 A.3 B.4 C.5 D. 6 4. 链表适用于( )查找

A.顺序 B.二分法 C.顺序,也能二分法 D.随机 5. 折半搜索与二叉搜索树的时间性能( )。

A. 相同 B. 完全不同 C. 有时不相同 D. 数量级都是O(log2n) 6.散列表的地址区间为0-17,散列函数为H(K)=K mod 17。采用线性探测法处理冲突,并将关键字序列26,25,72,38,8,18,59依次存储到散列表中。元素59存放在散列表中的地址是( )。

A. 8 B. 9 C. 10 D. 11 7. 当采用分快查找时,数据的组织方式为 ( ) 。 A.数据分成若干块,每块内数据有序

B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块

C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块 D. 数据分成若干块,每块(除最后一块外)中数据个数需相同

8. 散列函数有一个共同的性质,即函数值应当以( )取其值域的每个值。 A. 最大概率 B. 最小概率 C. 平均概率 D. 同等概率

9. 假定有k个关键字互为同义词,若用线性探测法把这k个关键字存入散列表中,至少要进行多少次探测?( )

A.k-1次 B. k次 C. k+1次 D. k(k+1)/2次

10、 哈希查找中k个关键字具有同一哈希值,若用线性探测法将这k个关键字对应的记录存入哈希表中,至少要进行( )次探测。

A. k B. k+1 C. k(k+1)/2 D.1+k(k+1)/2

11、在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0右孩子的平衡因子为1,则应作( ) 型调整以使其平衡。 A. LL B. LR C. RL D. RR

12、二叉查找树的查找效率与二叉树的( )有关, 在 ( ))时其查找效率最低

(1): A. 高度 B. 结点的多少 C. 树型 D. 结点的位置 (2): A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。 13、顺序表 ( 3, 6, 8, 10, 12, 15, 16, 18, 21, 25, 30 ) 中,用折半查找算法查找关键

码值11,所需的关键码比较次数为( ) A) 2 B) 3 C) 4 D) 5

14、对包含n个元素的哈希表进行查找,平均查找长度为( ) A) O(log2n) B) O(n) C) O(nlog2n) D) 不直接依赖于n

15、若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( )。

A. (n-1)/2 B. n/2 C. (n+1)/2 D. n 16. 下面关于二分查找的叙述正确的是 ( )

A. 表必须有序,表可以顺序方式存储,也可以链表方式存储 C. 表必须有序,而且只能从小到大排列

B. 表必须有序且表中数据必须是整型,实型或字符型 D. 表必须有序,且表只能以顺序方式存储

17. 对线性表进行二分查找时,要求线性表必须( ) A.以顺序方式存储 C.以链接方式存储

B.以顺序方式存储,且数据元素有序 D.以链接方式存储,且数据元素有序

18.适用于折半查找的表的存储方式及元素排列要求为( ) A.链接方式存储,元素无序 B.链接方式存储,元素有序

C.顺序方式存储,元素无序 D.顺序方式存储,元素有序 19. 用二分(对半)查找表的元素的速度比用顺序法( ) A. 必然快 B. 必然慢 C. 相等 D. 不能确定

20.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( )

A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减 21. 具有12个关键字的有序表,折半查找的平均查找长度( ) A. 3.1 B. 4 C. 2.5 D. 5 22. 折半查找的时间复杂性为( )

A. O(n2) B. O(n) C. O(nlogn) D. O(logn)

23.设顺序线性表的长度为30,分成5块,每块6个元素,如果采用分块查找,则其平均查找长度为( D )。 (A) 6

(B) 11

(C) 5

(D) 6.5

24. 二叉排序树的查找效率与二叉树的( )有关。

A. 高度 B. 结点的多少 C. 树型 D. 结点的位置 25.在等概率情况下,一棵平衡树的ASL为 ( )。

A. O(1) B. O( log2n ) C. O((log2n)2) D.O(nlog2n)

26.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( ) 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)

27. 在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0右孩子的平衡因子为1,则应作( ) 型调整以使其平衡。 A. LL B. LR C. RL D. RR 28、下列二叉排序树中,满足平衡二叉树定义的是( )。

29.下列关于m阶B-树的说法错误的是( )。 A.根结点至多有m棵子树 B.所有叶子都在同一层次上

C. 非叶结点至少有m/2 (m为偶数)或m/2+1(m为奇数)棵子树 D. 根结点中的数据是有序的

30. 下面关于m阶B树说法正确的是( )

①每个结点至少有两棵非空子树; ②树中每个结点至多有m一1个关键字; ③所有叶子在同一层上; ④当插入一个数据项引起B树结点分裂后,树长高一层。 A. ①②③ B. ②③ C. ②③④ D. ③ 31. 下面关于B和B+树的叙述中,不正确的是( )

A. B树和B+树都是平衡的多叉树。 B. B树和B+树都可用于文件的索引结构。 C. B树和B+树都能有效地支持顺序检索。 D. B树和B+树都能有效地支持随机检索。 32、下列叙述中,不符合m阶B树定义要求的是( ) A.根节点最多有m棵子树 B.所有叶结点都在同一层上 C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接

33、设散列表中有m个存储单元,散列函数H(key)= key % p,则p最好选择( )。 (A) 小于等于m的最大奇数

(B) 小于等于m的最大素数

A、

B、 C、 D、 (C) 小于等于m的最大偶数 (D) 小于等于m的最大合数

34、适于对动态查找表进行高效率查找的组织结构是( )。

A.有序表 B.分块有序表 C.二叉排序树 D.线性链表

三、判断题

1、查找相同结点的效率折半查找总比顺序查找高。( ) 2、索引顺序表的特点是块内可无序,块间要有序。( )

3、 在采用线性探测法处理冲突的散列表中,所有同义词在表中一定相邻。( ) 4、在平衡二叉树中,任意结点左右子树的高度差(绝对值)不超过1。( ) 5、若查找表的长度为n,则顺序查找法的平均查找长度为(n+1)/2。( ) 6、折半搜索适用于有序表,包括有序的顺序表和有序的链表。( )

7.采用线性探测法处理散列时的冲突,当从哈希表删除一个记录时,不应将这个记录的所在位置置空,因为这会影响以后的查找。( )

8.在散列检索中,“比较”操作一般也是不可避免的。( )

9.在m阶B-树中每个结点上至少有 个关键字,最多有m个关键字。( )

10.负载因子 (装填因子)是散列表的一个重要参数,它反映散列表的装满程度。( ) 11. 散列法的平均查找长度不随表中结点数目的增加而增加,随负载因子的增大而增大。( ) 12. 哈希表的结点中只包含数据元素自身的信息,不包含任何指针。 ( ) 13. 若散列表的负载因子α<1,则可避免冲突的产生。( )

14.用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度。( ) 15. 在平衡二叉树中,向某个平衡因子不为零的结点的子树中插入一新结点,一定会引起平

衡旋转。( )

16. 二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。( )

17. 就平均查找长度而言,分块查找最小,折半查找次之,顺序查找最大。( ) 18.对大小均为n的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找

成功,它们的平均查找长度是相同的,而对于查找失败,它们的平均查找长度是不同的。( )

19.任一查找树(二叉分类树)的平均查找时间都小于用顺序查找法查找同样结点的线性表的平均查找时间。 ( )

20、在二叉树排序树中插入一个新结点,总是插入到叶结点下面。( ) 21、顺序查找法适用于存储结构为顺序或链接存储的线性表。( )

四、简答题

1.对分(折半)查找适不适合链表结构的序列,为什么?用二分查找的查找速度必然比线性查找的速度快,这种说法对吗?

2.假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:

(1) 画出描述折半查找过程的判定树; (2) 若查找元素54,需依次与哪些元素比较? (3) 若查找元素90,需依次与哪些元素比较?

(4) 假定每个元素的查找概率相等,求查找成功时的平均查找长度。

3.设哈希(Hash)表的地址范围为0~17,哈希函数为:H(K)=K MOD 16。

K为关键字,用线性探测法再散列法处理冲突,输入关键字序列: (10,24,32,17,31,30,46,47,40,63,49) 造出Hash表,试回答下列问题: (1) 画出哈希表的示意图;

(2) 若查找关键字63,需要依次与哪些关键字进行比较? (3) 若查找关键字60,需要依次与哪些关键字比较?

(4) 假定每个关键字的查找概率相等,求查找成功时的平均查找长度。

4、设哈希表长度为11,哈希函数H(K)=(K的第一字母在字母表中的序号)MOD11,若输入顺序为(D,BA,TN,M,CI,I,K,X,TA),处理冲突方法为线性探测再散列或链地址法,要求构造哈希表,并求出等概率情况下查找成功平均查找长度。

5、输入一个正整数序列{100,50,302,450,66,200,30,260},建立一棵二叉排序树,要求:⑴ 画出该二叉排序树;

⑵ 画出删除结点302后的二叉排序树。

6、 设有一组关键字:{19,01,23,14,55,20,84,27,68},采用哈希函数: H(key)=key mod 7,采用开放地址法的线性探测再散列方法解决冲突。 要求:在0∽11的散列地址空间中对该关键字序列构造哈希表。

7、已知如下所示长度为12的表:

(Jan, Feb, Mar, Apr, May, June, July, Aug, Sep, Oct, Nov, Dec)

(1)试按表中元素的顺序依次插入一棵初始为空的二叉排序树,画出插入完成之后的二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。

(2)若对表中元素先进行排序构成有序表,求在等概率的情况下对此有序表进行折半查找时查找成功的平均查找长度。

(3)按表中元素顺序构造一棵平衡二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。

8、用开放地址法的二次探测再散列方法Hi=(H(key)+di) mod 10(di=12,22,32,?,)解决冲突。要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。

9、选取散列函数H(key)=(3*key),用线性探测法处理冲突,对下列关键码序列构造一个散列地址空间为0~10,表长为11的散列表,{22,41,53,08,46,30,01,31,66}。

五、算法设计题

1. 已知11个元素的有序表为(05 13 19 21 37 56 64 75 80 88 92), 请写出折半查找的算法程序,查找关键字为key的数据元素。

2.试写一个判别给定二叉树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结构。且树中结点的关键字均不同。

3. 已知一个含有1000个记录的表,关键字为中国人姓氏的拼音,请给出此表的一个哈希表设计方案,要求它在等概率情况下查找成功的平均查找长度不超过3。

4. 已知某哈希表的装载因子小于1,哈希函数H(key)为关键字(标识符)的第一个字母在字母表中的序号,处理冲突的方法为线性探测开放定址法。试编写一个按第一个字母的顺序输出哈希表中所有关键字的算法。