1.算法分析的两个主要方面是时间复杂度和空间复杂度的分析。 T
2.算法可以没有输入,但是必须有输出。 T
3.时间复杂度是根据算法写成的程序在执行时耗费时间的长度,往往与输入数据的规模有关。 T
4.空间复杂度是根据算法写成的程序在执行时占用存储单元的长度,往往与输入数据的规模有关。 T
5.递归程序往往简洁易懂,但占用较大空间。递归层数过大会造成系统堆栈溢出。 T
6.对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。 T
7.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用顺序表存储最节省时间。 T
8.在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。 F
访问前驱结点的时间复杂度为O(N),访问后继结点的时间复杂度为O(1)
头插法增加结点O(1),尾插法O(N)
9.将N个数据按照从小到大顺序组织存放在一个单向链表中。如果采用二分查找,那么查找的平均时间复杂度是O(logN)。F
10.若一个栈的输入序列为1,2,3,...,N,输出序列的第一个元素是i,则第j个输出元素是j−i−1。 F
i-j+1
11.所谓"循环队列"是指用单向循环链表或者循环数组表示的队列。 F
循环队列通过将顺序存储的队列首尾相连,使得队列的尾端和头端形成一个环,从而实现了循环队列的逻辑结构。这种结构允许在队列的尾部添加元素时,可以像在队列的头部一样简单,从而避免了传统队列在添加元素时可能出现的"假溢出"现象。循环队列的实现方式可以是单向循环链表或循环数组,但它们都是循环队列的具体实现方式,而不是循环队列本身。
12.在用数组表示的循环队列中,front值一定小于等于rear值。 F
front值可以小于/等于/大于rear值
队空:front=rear
队满:(rear+1+maxszie)%maxsize=front
13.对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一个元素的时间复杂度分别对应为O(1)和O(N)。 F
14.若用链表来表示一个线性表,则表中元素的地址一定是连续的。 F
15.序列{1,2,3,4,5}依次入栈,则不可能得到{3,4,1,2,5}的出栈序列。 T
16.栈结构不会出现溢出现象。 F
第5题里面:递归层数过大会造成系统堆栈溢出
17.两个栈共享一片连续空间,可以将两个栈的栈底分别设在这片空间的两端。 T
18.线性表L如果需要频繁地进行不同下标元素的插入、删除操作,此时选择顺序存储结构更好。 F
19.线性表是表示多对一关系的数据结构。 F
20.堆栈适合解决处理顺序与输入顺序相同的问题。 F
21.队列适合解决处理顺序与输入顺序相同的问题。 T
22.对AVL树中的任一结点,其右子树的高度一定比其左子树的高度要高。 F
23.对AVL树中的任一结点,其左、右子树的高度一定是一样的。 F
24.二叉树就是度为二的有序树。 F
25.树是表示一对多关系的数据结构。 T
26.树是表示多对多关系的数据结构。 F
27.从树的根结点到任何一个叶结点都有唯一的一条线性表。 T
28.一棵树中,某结点位置上方各层中的所有结点都是该结点的祖先。 F
29.已知一棵二叉树的先序遍历结果是ABC, 则CAB不可能是中序遍历结果。 T
先序遍历结果是ABC说明
如果中序遍历结果为CAB说明C在A左边,B在A右边,跟先序的BC都在A的右边矛盾
所以不可能
30.某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无右孩子。 T
31.某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无左孩子。 F
32.若A和B都是一棵二叉树的叶子结点,则存在这样的二叉树,其前序遍历序列为...A...B...,而中序遍历序列为...B...A...。 F
中序遍历序列为...A...B...
33.若一个结点是某二叉树的中序遍历序列的最后一个结点,则它必是该树的前序遍历序列中的最后一个结点。 F
34.任何二叉搜索树中同一层的结点从左到右是有序的(从小到大)。 T
35.在一棵二叉搜索树上查找63,序列39、101、25、80、70、59、63是一种可能的查找时的结点值比较序列。 F
36.在一棵由包含4、5、6等等一系列整数结点构成的二叉搜索树中,如果结点4和6在树的同一层,那么可以断定结点5一定是结点4和6的父亲结点。 F
37.二叉搜索树的查找和折半查找的时间复杂度相同。 F
当二叉搜索树只有左子树时,时间复杂度为O(N)
只有是平衡二叉树时才和折半查找的时间复杂度相同
38.一棵有124个结点的完全二叉树,其叶结点个数是确定的。 T
39.将一棵完全二叉树存于数组中(根结点的下标为1)。则下标为23和24的两个结点是兄弟。 F
40.无向连通图至少有一个顶点的度为1。 F
度可以为0
41.用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关。 F
有向图空间数为V+E
无向图空间数为V+2E
42.用邻接矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关。 T
存储空间数始终是V^2
43.在一个有向图中,所有顶点的入度与出度之和等于所有边之和的2倍。T
44.在任一有向图中,所有顶点的入度之和等于所有顶点的出度之和。 T
45.用一维数组G[]存储有4个顶点的无向图如下:G[] = { 0, 1, 0, 1, 1, 0, 0, 0, 1, 0}则顶点2和顶点0之间是有边的。T
46.图是表示多对多关系的数据结构。 T
47.如果从有向图 G 的每一点均能通过深度优先搜索遍历到所有其它顶点,那么该图一定不存在拓扑序列。 T
48.在一个有权无向图中,若b到a的最短路径距离是12,且c到b之间存在一条权为2的边,则c到a的最短路径距离一定不小于10。 T
49.对于带权无向图 G = (V, E),M 是 G 的最小生成树,则 M 中任意两点 V1 到 V2的路径一定是它们之间的最短路径。 F
50.Kruskal 算法是维护一个森林,每一步把两棵树合并成一棵。 T
通过边的不断添加,会把各个树合并一起
Kruskal算法求最小生成树(最后附完整代码)-CSDN博客
51.Prim 算法是通过每步添加一条边及其相连的顶点到一棵树,从而逐步生成最小生成树。 T
52.如果 e 是有权无向图 G 唯一的一条最短边,那么边 e 一定会在该图的最小生成树上。 T
53.若图G有环,则G不存在拓扑排序序列。 T
54.若图G为连通图且不存在拓扑排序序列,则图G必有环。 T
55.对N个记录进行归并排序,归并趟数的数量级是O(NlogN)。 F
O(logN)
56.对N个记录进行堆排序,需要的额外空间为O(N)。 F
57.对N个记录进行简单选择排序,比较次数和移动次数分别为O(N2)和O(N) T
58.对N个记录进行快速排序,在最坏的情况下,其时间复杂度是O(NlogN)。 F
快速排序的平均时间复杂度和最坏时间复杂度分别是O(nlgn)、O(n^2)
59.希尔排序是稳定的算法。 F
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这个排序算法是稳定的;否则称为不稳定的。
60.对N个不同的数据采用冒泡排序进行从大到小的排序,当元素基本有序时交换元素次数肯定最多。 F
61.要从50个键值中找出最大的3个值,选择排序比堆排序快。 T
- 对于小规模数据集(如50个键值),选择排序可以通过较少的比较次数快速找到最大的3个值,因此在这种情况下,选择排序比堆排序快。
- 然而,对于大规模数据集,堆排序的效率更高,因为它能够利用堆的特性(如最大堆)来快速找到最大值,从而在处理大量数据时表现出更好的性能。
62.在散列表中,所谓同义词就是具有相同散列地址的两个元素。 T
63.在散列表中,所谓同义词就是被不同散列函数映射到同一地址的两个元素。 F
64.采用平方探测冲突解决策略(hi(k)=(H(k)+i2)%11,注意:不是±i2),将一批散列值均等于2的对象连续插入一个大小为11的散列表中,那么第4个对象一定位于下标为0的位置。 T
65.若用平方探测法解决冲突,则插入新元素时,若散列表容量为质数,插入就一定可以成功。 F
66.将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为M/S。 T
67.在散列中,函数"插入"和"查找"具有同样的时间复杂度。 T
68.将 10 个元素散列到 100 000 个单元的哈希表中,一定不会产生冲突。 F