搜档网
当前位置:搜档网 › 中南大学数据结构与算法第9章查找课后作业答案

中南大学数据结构与算法第9章查找课后作业答案

中南大学数据结构与算法第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的有序的顺序表进行二分查找的判定树,并指出在等概率时查找成功的平均查找长度,以及查找失败时所需的最多的关键字比较次数。

(2)g的查找过程如下:

[a b c d e f (g) h i j k p q]

一次比较成功。

(3)n的查找过程如下:

下标: 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]

第四次比较: a b c d e f g h i j [k] p q]

经过四次比较,查找失败。

6.将(for, case, while, class, protected, virtual, public, private, do, template, const ,if, int)中的关键字依次插入初态为空的二叉排序树中,请画出所得到的树T。然后画出删去for之后的二叉排序树T',若再将for 插入T'中得到的二叉排序树T''是否与T相同?最后给出T"的先序、中序和后序序列。

答:

二叉排序树T如下图:

删去for后的二叉排序树如下图:

再插入结点for后的二叉排序树T":

二叉排序树T"与T不同

T"的先序序列是:do case class const while protected private if for int virtual public template

T"的中序序列是:case class const do for if int private protected public template virtual while T"的后序序列是:const class case for int if private template public virtual protected while do

7.对给定的关键字集合,以不同的次序插入初始为空的树中,是否有可能得到同一棵二叉排序树? 答:

有可能。如有两个序列:3,1,2,4 和3,4,1,2,它们插入空树所得的二叉排序树是相同的。

相关主题