数据结构期末复习
选择题
1.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( d ) A. 1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,3
第一次:(18+1)/2=9
第二次:(9-1+1)/2=4
第三次:(4-1+1)/2=2
第四次:(2+1+4)/2=3
2.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为 ( c )。
A. O(1) B. O(n) C. O(1og2n) D. O(n2)
3.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有(b)个空指针域。
(A) 2m-1 (B) 2m (C ) 2m+1 (D) 4m
4.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为(c )。
(A) R-F (B) F-R (C ) (R-F+M)%M (D) (F-R+M)%M
5.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和表结点的个数分别为( d)。
(A) n,e (B) e,n (C ) 2n,e (D) n,2e
G是无向图,在其邻接表表示中有n个顶点表结点和2e个边表结点
G是有向图,在其邻接表表示中有n个顶点表结点和e个边表结点
6… 设某强连通图中有n个顶点,则该强连通图中至少有( c)条边。
(A) n(n-1) (B) n+1 (C ) n (D) n(n+1)
若是个环,则任意两个顶点之间都有联系
7.设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列( b)方法可以达到此目的。
(A) 快速排序 (B) 堆排序 (C ) 归并排序 (D) 插入排序
8.下列四种排序中(d)的空间复杂度最大。
(A) 插入排序 (B) 冒泡排序 © 堆排序 (D) 归并排序
B.n^2
9.设有n个待排序的记录关键字,则在堆排序中需要( a)个辅助记录单元。
(A) 1 (B) n ( C) nlog2n (D) n2
记录根节点
10.设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有(c)条有向边。
(A) n (B) n-1 © m (D) m-1
11.下列四种排序中( a)的空间复杂度最大。
(A) 快速排序 (B) 冒泡排序 © 希尔排序 (D) 堆
快速排序 :最好log2n,最坏n
冒泡排序:1
希尔排序:1
堆 :1
12.数据的最小单位是( a)。
(A) 数据项 (B) 数据类型 © 数据元素 (D) 数据变量
13.设一条单链表的头指针变量为head且该链表没有头结点,则其判空条件是( a)。
(A) head0 (B) head->next0
© head->next==head (D) head!=0
14.一趟排序结束后不一定能够选出一个元素放在其最终位置上的是( d)。
(A) 堆排序 (B) 冒泡排序 © 快速排序 (D) 希尔排序
15.( b )二叉排序树可以得到一个从小到大的有序序列。
(A) 先序遍历 (B) 中序遍历 © 后序遍历 (D) 层次遍历
16.建立一个长度为n的有序单链表的时间复杂度为(c)
(A) O(n) (B) O(1) © O(n2) (D) O(log2n)
17.设F是由T1、T2和T3三棵树组成的森林,与F对应的二叉树为B,T1、T2和T3的结点数分别为N1、N2和N3,则二叉树B的根结点的左子树的结点数为( a )。
(A) N1-1 (B) N2-1 © N2+N3 (D) N1+N3
18.设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用二分法查找值为24的元素需要经过(c)次比较。
(A) 1 (B) 2 © 3 (D) 4
判断题
-
快速排序是排序算法中平均性能最好的一种排序。( t )
-
设一棵树T可以转化成二叉树BT,则二叉树BT中一定没有右子树。( t )
-
当向二叉排序树中插入一个结点,则该结点一定成为叶子结点。( t)
-
有向图的邻接表和逆邻接表中表结点的个数不一定相等。(f )
-
顺序表查找指的是在顺序存储结构上进行查找。( f )
填空题
- 通常从四个方面评价算法的质量:正确性,易读性,强壮性,高效率
- 对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别有___e___个和___2e__个。
- AOV网是一种__有向无回路__的图。
- 向一棵B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度____增加1_____。
- 在堆排序的过程中,对任一分支结点进行筛选运算的时间复杂度为_O(log2n)__,整个堆排序过程的时间复杂度为_O(nlog2n)_。
- 为了能有效地应用HASH查找技术,必须解决的两个问题是______构造一个好的HASH函数__和_____确定解决冲突的方法___。
- 设某棵二叉树中度数为0的结点数为N0,度数为1的结点数为N1,则该二叉树中度数为2的结点数为__n0-1_______;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有__2n0+n1_个空指针域。
- 设某无向图中顶点数和边数分别为n和e,所有顶点的度数之和为d,则e=_d/2。
- 设一组初始记录关键字序列为(55,63,44,38,75,80,31,56),则利用筛选法建立的初始小根堆为__31 38 44 56 75 80 55 63_________。
- 设一棵完全二叉树中有500个结点,则该二叉树的深度为_____9_____;若用二叉链表作为该完全二叉树的存储结构,则共有501_个空指针域。 (孩子结点*2+1)
- 设有向图G用邻接矩阵A[n][n]作为存储结构,则该邻接矩阵中第i行上所有元素之和等于顶点i的___出度,第i列上所有元素之和等于顶点i的_入度_。
- 设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较__7_次就可以断定数据元素X是否在查找表中。log2n
- 设有n个无序的记录关键字,则直接插入排序的时间复杂度为____n_*n___,快速排序的平均时间复杂度为__nlog2n___。
- 设初始记录关键字序列为(K1,K2,…,Kn),则用筛选法思想建堆必须从第__n/2__个元素开始进行筛选。
- 设一组初始记录关键字序列为(20,18,22,16,30,19),则根据这些初始关键字序列建成的初始小根堆为__16 18 19 20 30 22__。
- 设有一个顺序共享栈S[0:n-1],其中第一个栈项指针top1的初值为-1,第二个栈顶指针top2的初值为n,则判断共享栈满的条件是___top1+1=top2_______。
- 在图的邻接表中用顺序存储结构存储表头结点的优点是____可以随机访问到任一个顶点的简单链表____。
- 栈的插入和删除只能在栈的栈顶进行,后进栈的元素必定先出栈,所以又把栈称为___FILO_表;队列的插入和删除运算分别在队列的两端进行,先进队列的元素必定先出队列,所以又把队列称为__FIFO_表。
- 设F和R分别表示顺序循环队列的头指针和尾指针,则判断该循环队列为空的条件为____f==r__。
- 设一棵二叉树的前序序列为ABC,则有__5________种不同的二叉树可以得到这种序列。
- 下面程序段的功能是实现在二叉排序树中插入一个新结点,请在下划线处填上正确的内容。
typedef struct node
{int data;
struct node *lchild;
struct node *rchild;
}bitree;
void bstinsert(bitree &t,int k)
{
if (t==0 ) {___t=(bitree)malloc(sizeof(bitree))______ ;t->data=k;t->lchild=t->rchild=0;}
else if (t->data>k) bstinsert(t->lchild,k);else________bestinsrt(t->rchild,k)_____;
} - 对一组初始关键字序列(40,50,95,20,15,70,60,45,10)进行冒泡排序,则第一趟需要进行相邻记录的交换的次数为______6___,在整个排序过程中最多需要进行___8___趟排序才可以完成。
- 设一组初始记录关键字序列为(20,12,42,31,18,14,28),则根据这些记录关键字构造的二叉排序树的平均查找长度是__________19/7______________
其他
1.设一组初始记录关键字序列为(45,80,48,40,22,78),则分别给出第4趟简单选择排序和第4趟直接插入排序后的结果。
22 40 45 48 80 78 . 40 45 48 80 22 78
简单选择排序:每次找到最小的放在最后
直接插入排序:每次选未排序的第一个数在要排序的地方插入
2.设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。
2,ASL=(11+22+34+42)/9=25/9
瑞格题![在这里插入图片描述](https://img-blog.csdnimg.cn/2020122716161867.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FsaXRhMDc=,size_16,color_FFFFFF,t_70#pic_center)
排序
直接插入排序 冒泡排序 简单选择排序
时间复杂度 O(n^2)
空间复杂度 O(1)
希尔排序
时间复杂度 不定但比直接插入低
空间复杂度 O(1)
快速排序
时间复杂度 O(nlog2n)
空间复杂度 O(log2n) O(n)
堆排序
时间复杂度 O(nlog2n)
空间复杂度 O(1)
归并排序
时间复杂度 O(nlog2n)
空间复杂度 O(n)
不稳定排序
希尔排序 简单选择排序 快速排序 堆排序