数据结构 第八章 查找表 联系客服

发布时间 : 星期一 文章数据结构 第八章 查找表更新完毕开始阅读

6.负载因子 (装填因子)是散列表的一个重要参数,它反映散列表的装满程度。

7. 散列法的平均检索长度不随表中结点数目的增加而增加,而是随负载因子的增大而增大。 8. 哈希表的结点中只包含数据元素自身的信息,不包含任何指针。 9. 若散列表的负载因子α<1,则可避免碰撞的产生。 10.查找相同结点的效率折半查找总比顺序查找高。

11.用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度。

12. 在索引顺序表中,实现分块查找,在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,而且与每块中元素个数有关。

13. 顺序查找法适用于存储结构为顺序或链接存储的线性表。 14. 折半查找法的查找速度一定比顺序查找法快。

15. 就平均查找长度而言,分块查找最小,折半查找次之,顺序查找最大。 16.对无序表用二分法查找比顺序查找快。

17.对大小均为n的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找成功,它们的平均查找长度是相同的,而对于查找失败,它们的平均查找长度是不同的。 18.任一查找树(二叉分类树)的平均查找时间都小于用顺序查找法查找同样结点的线性表的平均查找时间.

19. 最佳二叉树是AVL树(平衡二叉树)。

20.在查找树(二叉树排序树)中插入一个新结点,总是插入到叶结点下面。 21.完全二叉树肯定是平衡二叉树。

22.对一棵二叉排序树按前序方法遍历得出的结点序列是从小到大的序列。

23.二叉树中除叶结点外, 任一结点X,其左子树根结点的值小于该结点(X)的值;其右子树根结点的值≥该结点(X)的值,则此二叉树一定是二叉排序树。

24.有n个数存放在一维数组A[1..n]中,在进行顺序查找时,这n个数的排列有序或无序其平均查找长度不同。

25. N个结点的二叉排序树有多种,其中树高最小的二叉排序树是最佳的。

26. 在任意一棵非空二叉排序树中,删除某结点后又将其插入,则所得二排序叉树与原二排序叉树相同。

27. 设T为一棵平衡树,在其中插入一个结点n,然后立即删除该结点后得到T1,则T与T1必定相同。

28. 将线性表中的结点信息组织成平衡的二叉树,其优点之一是总能保证任意检索长度均为log2n量级(n为线形表中的结点数目)。 29. B-树中所有结点的平衡因子都为零。

30. 虽然信息项序列的顺序不一样,但依次生成的二叉排序树却是一样的。 31. 在9阶B-树中,除叶子以外的任意结点的分支数介于5和9之间。

32.B-树的插入算法中,通过结点的向上“分裂”,代替了专门的平衡调整。

33. 在平衡二叉树中,向某个平衡因子不为零的结点的树中插入一新结点,必引起平衡旋转。 34.二叉排序树删除一个结点后,仍是二叉排序树。 35.B+树既能索引查找也能顺序查找。

三、填空题

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

2. 在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20,需做的关键码比较次数为____.

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

4. 在有序表A[1..20]中,按二分查找方法进行查找,查找长度为5的元素个数是__________ 5. 高度为4的3阶b-树中,最多有__________个关键字。

6. 在有序表A[1?20]中,按二分查找方法进行查找,查找长度为4的元素的下标从小到大依次是__________

7. 给定一组数据{6,2,7,10,3,12}以它构造一棵哈夫曼树,则树高为__________,带权路径长度WPL的值为__________。

8. 在一棵m阶B-树中,若在某结点中插入一个新关键字而引起该结点分裂,则此结点中原有的关键字的个数是__________;若在某结点中删除一个关键字而导致结点合并,则该结点中原有的关键字的个数是__________。

9. 己知有序表为(12,18,24,35,47,50,62,83,90,115,134)当用二分法查找90时,需__________次查找成功,47时__________成功,查100时,需__________次才能确定不成功。

10. 哈希表是通过将查找码按选定的__(1)__和 __(2)__,把结点按查找码转换为地址进行存储的线性表。哈希方法的关键是_(3)__和 __(4)__。一个好的哈希函数其转换地址应尽可能__(5)__,而且函数运算应尽可能__(6)__。 11. 平衡二叉树又称__________,其定义是__________。 12. 在哈希函数H(key)=key%p中,p值最好取__________。

13. 对于长度为255的表,采用分块查找,每块的最佳长度为__________。 14. 在n个记录的有序顺序表中进行折半查找,最大比较次数是__________。 15.有一个2000项的表,欲采用等分区间顺序查找方法进行查找,则每块的理想长度是__(1)___,分成__(2)___块最为理想,平均查找长度是__(3)___。

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

17. 分块检索中,若索引表和各块内均用顺序查找,则有900个元素的线性表分成__________块最好:若分成25块,其平均查找长度为__________。

18. 执行顺序查找时,储存方式可以是__(1)__,二分法查找时,要求线性表__(2)__,分块查找时要求线性表 __(3)__,而散列表的查找,要求线性表的存储方式是 __(4)__。 19. 如果按关键码值递增的顺序依次将关键码值插入到二叉排序树中,则对这样的二叉排序树检索时,平均比较次数为__________。

20. 如果关键码按值排序,而后用二分法依次检索这些关键码,并把检索中遇到的在二叉树

中没有出现的关键码依次插入到二叉排序树中,则对这样的二叉排序树检索时,平均比较次数为__________。 21. 平衡因子的定义是__________

22. 查找是非数值程序设计的一个重要技术问题,基本上分成__(1)__查找,__(2)__查找和

__(3)__查找。处理哈希冲突的方法有__(4)__、__(5)__、__(6)__和__(7)__。

23. 具有N个关键字的B树的查找路径长度不会大于__________。

24. 在一棵有N 个结点的非平衡二叉树中进行查找,平均时间复杂度的上限(即最坏情况平均时间复杂度)为________ 。

25. 假设有n个关键字,它们具有相同的Hash函数值,用线性探测方法解决冲突,把这n个关键字散列到大小为n的地址空间中,共计需要做__________次插入和探测操作。 26. 高度为8的平衡二叉树的结点数至少有__________个。

27. 高度为5(除叶子层之外)的三阶B-树至少有__________个结点。

28. 假定查找有序表A[1..12]中每个元素的概率相等,则进行二分查找时的平均查找长度为__________

29. 可以唯一的标识一个记录的关键字称为__________。

30. 已知二叉排序树的左右子树均不为空,则__________上所有结点的值均小于它的根结点值,__________上所有结点的值均大于它的根结点的值。

31. 动态查找表和静态查找表的重要区别在于前者包含有__________和__________运算,而后者不包含这两种运算。

32. 对于具有144 个记录的文件,若采用分块查找法,且每块长度为8,则平均查找长度为__________.

33. 127阶B-树中每个结点最多有__(1)__个关键字;除根结点外所有非终端结点至少有__(2)__棵子树;65阶B+树中除根结点外所有结点至少有__(3)__个关键字;最多有__(4)__棵子树;

34. 若静态查找表的类型定义如下:

TYPE rectype=RECORD key:keytype; ??; END; ordlisttp=ARRAY[1..n] OF rectype; 请完成以下二分查找的算法:

FUNC binsrch(r:ordlisttp;k:keytype):integer; BEGIN low:=1;hig:=n;suc:=false; WHILE ___(1)___ AND NOT(suc)DO [ mid:=__(2)____;

CASE

k>r[mid].key:low:=mid+1; k=r[mid].key:suc:=true; k

IF suc THEN __(3)__ ELSE __(4)__

END;

35. 顺序查找

FUNC seq(a,n,k):integer;

BEGIN I:=1; A[n+1]= __(1)____;

WHILE a[I]<>k DO I:=I+1;

IF __(2)___ THEN return(I) ELSE return(0);

END;

36. 已知N元整型数组a存放N个学生的成绩,已按由大到小排序,以下算法是用对分(折半)查找方法统计成绩大于或等于X分的学生人数,请填空使之完善。(C语言,PASCAL语言的考生不填) #define N /*学生人数*/

int uprx(int a[N],int x ) /*函数返回大于等于X分的学生人数*/ { int head=1,mid,rear=N; do {mid=(head+rear)/2;

if(x<=a[mid]) __(1)__ else __(2)__; }while(__(3)__);

if (a[head]

37. 假设root是一棵给定的非空查找树,对于下面给出的子程序,当执行注释中给出的调用语句时,就可以实现如下的操作:在非空查找树root中查找值为k 的结点;若值为k的结点在树中,且是一个叶子结点,则删除此叶子结点,同时置success