数据结构基础题型
第一章 绪论
(一)数据结构的基本概念
(二)算法的基本概念
算法的时间复杂度和空间复杂度
1. (2011) 设n是描述问题规模的非负整数,下列程序段的时间复杂度是 ( )。
x=2; while(x<n/2) x=2*x;
2. (2012) 求整数n(n≥0)的阶乘的算法如下,其时间复杂度是 ( )。
int fact(int n){
if(n<=l) return 1;
return n*fact(n-l);
}
3. (2014) 下列程序段的时间复杂度是 ( )。
count=0;
for(k=1;k<=n;k*=2)
for(j=1;j<=n;j++)
count++;
4. (2017) 下列函数的时间复杂度是 ( )。
int func(int n){
int i=0, sum=0;
while(sum<n) sum += ++i;
return i;
}
5. (2019) 设n是描述问题规模的非负整数,下列程序段的时间复杂度是 ( )。
x=0; while(n>=(x+1)*(x+1)) x=x+1;
6. (2022) 下列程序段的时间复杂度是 ( )。

【分析】
算法复杂度描述,关键语句的执行次数t和问题规模n的关系。
| 第1轮 | 第2轮 | 第3轮 | ... | 第log2n轮 | |
|---|---|---|---|---|---|
| i | 1 | 2 | 4 | ... | |
| j | 0 | 0,1 | 0,1,2,3 | ... | 0,1,2,..., |
| t | 1 | 2 | 4 | ... |
知道每轮的执行次数t,以及共有多少轮log2n。所有轮循环的执行次数总和:t=(1+2+4+...+
7. (2025) 下列程序段的时间复杂度是 ( )。

【分析】
| 第1轮 | 第2轮 | 第3轮 | ... | 第log2n轮 | |
|---|---|---|---|---|---|
| i | 1 | 2 | 3 | ... | |
| j | 1 | 1,2 | 1,2,3 | ... | 1,2,3,..., |
| t | 1 | 2 | 3 | ... |
第二章 线性表
(一)线性表的基本概念
(二)线性表的实现
顺序存储;链式存储
(三)线性表的应用
1. (2023) 在下列对顺序存储的有序表(长度为n)实现给定操作的算法中,平均时间复杂度为O(1)的是 ( )。
2. (2016) 已知一个带有表头结点的循环双链表L,结点结构为,其中prev和next分别是指向其直接前驱和直接后继结点的指针。现要删除指针p所指的结点,正确的语句序列是 ( )。
3. (2016) 已知表头元素为c的单链表在内存中的存储状态如下表所示。

现将f存放于1014H处并插入单链表,若f在逻辑上位于a和e之间,则a、e、f的“链接地址”依次是 ( )。
4. (2021) 已知头指针h指向一个带头结点的非空循环单链表,结点结构为其中next是指向直接后继结点的指针,p是尾指针,g是临时指针。现要删除该链表的第一个元素,正确的语句序列是 ( )。
5. (2023) 现有非空双链表L,其结点结构为,prev是指向直接前驱结点的指针,next是指向直接后继结点的指针。若要在工中指针p所指向的结点(非尾结点)之后插入指针s指向的新结点,则在执行语句序列“s->next=p->next;p->next=s;”后,下列语句序列中还需要执行的是 ( )。
6. (2024) 已知带头结点的非空单链表L的头指针为h,结点结构为其中next是指向直接后继结点的指针。现有指针p和q,若p指向L中非首且非尾的任意一个结点,则执行语句序列“q=p->next;p->next=q->next;q->next= h->next; h->next=q;”的结果是 ( )。
第三章 栈、队列和矩阵
(一)栈和队列的基本概念
(二)栈和队列的顺序存储结构
(三)栈和队列的链式存储结构
(四)多维数组的存储
(五)特殊矩阵的压缩存储
(六)栈、队列和数组的应用
1. (2009) 设栈S和队列Q的初始状态均为空,元素abcdefg依次进入栈S。若每个元素出栈后,立即进入队列Q,且7个元素出队的顺序是bdcfeag,则栈S的容量至少是 ( )。
2. (2010) 若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续3次进行退栈操作,不可能得到的出栈序列是 ( )。
3. (2011) 元素a,b,c,d,e依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以元素d开头的序列个数是 ( )。
4. (2013) 一个栈的入栈序列为1,2,3,…,n,出栈序列是P1,P2,P3,…,Pn。若P2=3,则P3可能取值的个数是 ( )。
5. (2020) 对空栈S进行Push和Pop操作,入栈序列为a,b,c,d,e,经过Push、Push、Pop、Push、Pop、Push、Push、Pop操作后得到的出栈序列是 ( )。
6. (2022) 给定有限符号集S,in和out均为S中所有元素的任意排列。对于初始为空的栈ST,下列叙述中,正确的是 ( )。
7. (2025) 己知算法A用于检查字符串中各类括号是否匹配,A执行过程中使用初始为空的栈保存遇到的括号。若栈的容量是3,则下列选项中,A不能处理的是 ( )。
8. (2012) 已知操作符包括“+”、“-”、“*”、“/”、“(”和“)”。将中缀表达式 a+b-a*c+d/e-f+g 转换为等价的后缀表达式 ab+acd+e/f-*-g+ 时,用栈来存放暂时还不能确定运算次序的操作符。栈初始时为空时,转换过程中同时保存在栈中的操作符的最大个数是 ( )。
9. (2014) 假设栈初始为空,将中缀表达式 a/b+cd-ef/g 转换为等价的后缀表达式的过程中,当扫描到f时,栈中的元素依次是 ( )。
10. (2015) 已知程序如下:
int S(int n) { return (n<=0) ? 0: S(n-1)+n; }
void main() { cout << S(1); }
程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息依次对应的是 ( )。
11. (2016) 设有如下图所示的火车车轨,入口到出口之间有n条轨道,列车的行进方向均为从左至右,列车可驶入任意一条轨道。现有编号为1~9的9列列车,驶入的次序依次是8,4,2,5,3,9,1,6,7。若期望驶出的次序依次为1~9,则n至少是 ( )。

12. (2017) 下列关于栈的叙述中,错误的是 ( )。
13. (2010) 某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作。若元素a,b,c,d,e依次入此队列后再进行出队操作,则不可能得到的出队序列是 ( )。
14. (2011) 已知循环队列存储在一维数组A[0…n-1]中,且队列非空时front和rear分别指向队头元素和队尾元素。若初始时队列为空,且要求第一个进入队列的元素存储在A[0]处,则初始时front和rear的值分别是 ( )。
15. (2014) 循环队列放在一维数组A[0…M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。初始时为空。下列判断队空和队满的条件中,正确的是 ( )。
16. (2018) 现有队列Q与栈S,初始时Q中的元素依次是1,2,3,4,5,6(1在队头),S为空。若仅允许下列3种操作:①出队并输出出队元素;②出队并将出队元素入栈;③出栈并输出出栈元素,则不能得到的输出序列是 ( )。
17. (2021) 初始为空的队列Q的一端仅能进行入队操作,另外一端既能进行入队操作又能进行出队操作。若Q的入队序列是1,2,3,4,5,则不能得到的出队序列是 ( )。
18. (2009) 为解决计算机主机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是 ( )。
19. (2016) 有一个100阶的三对角矩阵M,其元素mi,j(1≤i,j≤100)按行优先依次压缩存入下标从0开始的一维数组N中。元素m30,30在N中的下标是 ( )。
20 (2017) 适用于压缩存储稀疏矩阵的两种存储结构是 ( )。
21. (2018) 设有一个12×12的对称矩阵M,将其上三角部分的元素mi,j(1≤i≤j≤12)按行优先存入C语言的一维数组N中,元素m6,6在N中的下标是 ( )。
22. (2020) 将一个10×10对称矩阵M的上三角部分的元素mi,j(1≤i≤j≤10)按列优先存入C语言的一维数组N中,元素m7,2在N中的下标是 ( )。
23. (2021) 二维数组A按行优先方式存储,每个元素占用1个存储单元。若元素A[0][0]的存储地址是100,A[3][3]的存储地址是220,则元素A[5][5]的存储地址是 ( )。
24. (2023) 若采用三元组表存储结构存储稀疏矩阵M,则除三元组表外,下列数据中还需要保存的是 ( )。
第四章 串
字符串模式匹配
1. (2015) 已知字符串s为'abaabaabacacaabaabcc',模式串t为'abaabc',采用KMP算法进行匹配,第一次出现“失配”(s[i]≠t[j])时,i=j=5,则下次开始匹配时,i和j的值分别是 ( )。
2. (2019) 设主串T='abaabaabcabaabc',模式串S='abaabc',采用KMP算法进行模式匹配,到匹配成功时为止,在匹配过程中进行的单个字符间的比较次数是 ( )。
3. (2024) KMP算法使用修正后的next数组进行模式匹配,模式串为S='aabaab',当主串的某个字符与S的某个字符失配时,S向右滑动的最长距离是 ( )。
第五章 树
(一)树的基本概念
(二)二叉树
二叉树的定义及其主要特征;二叉树的顺序存储结构和链式存储结构;
二叉树的遍历;线索二叉树的基本概念和构造
(三)树、森林
树的存储结构;森林与二叉树的转换;树和森林的遍历
(四)树与二叉树的应用
哈夫曼(Huffman)树和哈夫曼编码;并查集及其应用;堆及其应用
1. (2009) 已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是 ( )。
2. (2010) 在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶结点个数是 ( )。
3. (2011) 已知一棵有2011个结点的树,其叶结点个数为116,该树对应的二叉树中无右孩子的结点个数是 ( )。
4. (2011) 若一棵完全二叉树有768个结点,则该二叉树中叶结点的个数是 ( )。
5. (2018) 设一棵非空完全二叉树T的所有叶结点均位于同一层,且每个非叶结点都有2个子结点。若T有k个叶结点,则T的结点总数是 ( )。
6. (2020) 对于任意一棵高度为5且有10个结点的二叉树,若采用顺序存储结构保存,每个结点占1个存储单元(仅存放结点的数据信息),则存放该二叉树需要的存储单元数量至少是 ( )。
7. (2022) 若三叉树T中有244个结点(叶结点的高度为1),则T的高度至少是 ( )。
8. (2025) 若二叉树的结点值均为正整数,采用顺序存储方式保存在数组R中,用-1表示结点不存在,则下列数组中,不能表示一棵二叉树的是 ( )。
9. (2009) 给定二叉树如下图所示。设N代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。若遍历后的结点序列是3175624,则其遍历方式是 ( )。

10. (2011) 一棵二叉树的前序遍历序列和后序遍历序列分别为1,2,3,4和4,3,2,1,该二叉树的中序遍历序列不会是 ( )。
11. (2012) 若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b,c,d,e,a,则根结点的孩子结点 ( )。
12. (2015) 先序序列为a, b, c, d的不同二叉树的个数是 ( )。
13. (2017) 某二叉树的树形如下图所示,其后序序列为e,a,c,b,d,g,f,树中与结点a同层的结点是 ( )。

14. (2017) 要使一棵非空二叉树的先序序列与中序序列相同,其所有非叶结点须满足的条件是 ( )。
15. (2022) 若结点p与q在二叉树T的中序遍历序列中相邻,且p在q之前,则下列p与q的关系中,不可能的是 ( )。
16. (2023) 已知一棵二叉树的树形如下图所示,若其后序遍历序列为f,d,b,e,c,a,则其先序遍历序列是 ( )。

17. (2024) 若p、q和v均为二叉树T中的结点,v有两个孩子结点,T的中序遍历序列形如“..., p, v, q,...”,则在下列叙述中,正确的是 ( )。
18. (2010) 下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是 ( )。

19. (2013) 若X是后序线索二叉树中的叶结点,且X存在左兄弟结点Y,则X的右线索指向的是 ( )。
20 (2014) 若对下图所示的二叉树进行中序线索化,则结点x的左、右线索指向的结点分别是 ( )。

21. (2009) 将森林转换为对应的二叉树,若在二叉树中,结点u是结点v的父结点的父结点,则在原来的森林中,u和v可能具有的关系是 ( )。
22. (2014) 将森林F转换为对应的二叉树T,F中叶结点的个数等于 ( )。
23. (2016) 若森林F有15条边、25个结点,则F包含树的个数是 ( )。
24. (2019) 若将一棵树T转化为对应的二叉树BT,则下列对BT的遍历中,其遍历序列与T的后根遍历序列相同的是 ( )。
25. (2020) 已知森林F及与之对应的二叉树T,若F的先根遍历序列是a,b,c,d,e,f,中根遍历序列是b,a,d,f,e,c,则T的后根遍历序列是 ( )。
26. (2021) 某森林F对应的二叉树为T,若T的先序遍历序列是a,b,d,c,e,g,f,中序遍历序列是b,d,a,e,g,c,f,则F中树的棵数是 ( )。
27. (2010) n(n≥2)个权值均不相同的字符构成哈夫曼树,关于该树的叙述中,错误的是 ( )。
28. (2014) 5个字符有如下4种编码方案,不是前缀编码的是 ( )。
29. (2015) 下列选项给出的是从根分别到达两个叶结点路径上的权值序列,能属于同一棵哈夫曼树的是 ( )。
30. (2017) 已知字符集{a,b,c,d,e,f,g,h},若各字符的哈夫曼编码依次是0100, 10, 0000, 0101, 001, 011, 11, 0001,则编码序列0100011001001011110101的译码结果是 ( )。
31. (2018) 已知字符集{a,b,c,d,e,f},若各字符出现的次数分别为6,3,8,2,10,4,则对应字符集中各字符的哈夫曼编码可能是 ( )。
32. (2019) 对n个互不相同的符号进行哈夫曼编码。若生成的哈夫曼树共有115个结点,则n的值是 ( )。
33. (2021) 若某二叉树有5个叶结点,其权值分别为10, 12, 16, 21, 30,则其最小的带权路径长度(WPL)是 ( )。
34. (2022) 对任意给定的含n(n>2)个字符的有限集S,用二叉树表示S的哈夫曼编码集和定长编码集,分别得到二叉树T1和T2。下列叙述中,正确的是 ( )。
35. (2023) 在由6个字符组成的字符集S中,各字符出现的频次分别为3,4,5,6,8,10,为S构造的哈夫曼编码的加权平均长度为 ( )。
第六章 图
(一)图的基本概念
(二)图的存储及基本操作
邻接矩阵;邻接表;邻接多重表;十字链表
(三)图的遍历
深度优先搜索;广度优先搜索
(四)图的基本应用
最小(代价)生成树;最短路径;拓扑排序;关键路径
1. (2009) 下列关于无向连通图特性的叙述中, 正确的是 ( )。
2. (2010) 若无向图G=(V,E)中含有7个顶点, 要保证图G在任何情况下都是连通的, 则需要的边数最少是 ( )。
3. (2017) 已知无向图G含有16条边, 其中度为4的顶点个数为3, 度为3的顶点个数为4, 其他顶点的度均小于3。图G所含的顶点个数至少是 ( )。
4. (2022) 对于无向图G=(V,E), 下列选项中正确的是 ( )。
5. (2025) 下列关于图的叙述中,正确的是 ( )。
6. (2013) 设图的邻接矩阵A如下所示, 各顶点的度依次是 ( )。
7. (2024) 若无向图G=(V,E)的邻接多重表如下图所示, 则G中顶点b与d的度分别是 ( )。

8. (2012) 对有n个顶点、e条边且使用邻接表存储的有向图进行广度优先遍历, 其算法的时间复杂度是 ( )。
9. (2013) 若对如下无向图进行遍历, 则下列选项中, 不是广度优先遍历序列的是 ( )。

10. (2015) 设有向图 G=(V,E),顶点集 V={V0, V1, V2, V3},边集 E={ <v0, v1>, <v0, v2>, <v0, v3>, <v1, v3> }。若从顶点 V0 开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是 ( )。
11. (2016) 下列选项中,不是下图深度优先搜索序列的是 ( )。

12. (2010) 对下图进行拓扑排序,可得不同拓扑序列的个数是 ( )。

13. (2012) 下列关于最小生成树的叙述中,正确的是 ( )。
14. (2012) 对下图所示的有向带权图,若采用Dijkstra算法求从源点a到其他各顶点的最短路径,则得到的第一条最短路径的目标顶点是b,第二条最短路径的目标顶点是c,后续得到的其余各最短路径的目标顶点依次是 ( )。

15. (2012) 若用邻接矩阵存储有向图,矩阵中主对角线以下的元素均为零,则关于该图拓扑序列的结论是 ( )。
16. (2013) 下列AOE网表示一项包含8个活动的工程。通过同时加快若干活动的进度可以缩短整个工程的工期。下列选项中,加快其进度就可以缩短工程工期的是 ( )。

17. (2014) 对下图所示的有向图进行拓扑排序,得到的拓扑序列可能是 ( )。

18. (2015) 求下面的带权图的最小(代价)生成树时,可能是Kruskal算法第2次选中但不是Prim算法(从V4 开始)第2次选中的边是 ( )。

19. (2011) 下列关于图的叙述中,正确的是 ( )。
20. (2016) 使用Dijkstra算法求下图中从顶点1到其他各顶点的最短路径,依次得到的各最短路径的目标顶点是 ( )。

21. (2016) 若对n个顶点、e条弧的有向图采用邻接表存储,则拓扑排序算法的时间复杂度是 ( )。
22. (2018) 下列选项中,不是如下有向图的拓扑序列的是 ( )。

23. (2019) 下图所示的AOE网表示一项包含8个活动的工程。活动d的最早开始时间和最迟开始时间分别是 ( )。

24. (2019) 用有向无环图描述表达式(x+y)((x+y)/x),需要的顶点个数至少是 ( )。
25. (2020) 已知无向图G如下所示,使用Kruskal算法求图G的最小生成树,加到最小生成树中的边依次是 ( )。

26. (2020) 修改递归方式实现的图的深度优先搜索(DFS)算法,将输出(访问)顶点信息的语句移到退出递归前(即执行输出语句后立刻退出递归)。采用修改后的算法遍历有向无环图G,若输出结果中包含G中的全部顶点,则输出的顶点序列是G的 ( )。
27. (2020) 若使用AOE网估算工程进度,则下列叙述中正确的是 ( )。
28. (2021) 给定如下有向图,该图的拓扑有序序列的个数是 ( )。

29. (2021) 使用Dijkstra算法求下图中从顶点1到其余各顶点的最短路径,将当前找到的从顶点1到顶点2,3,4,5的最短路径长度保存在数组dist中,求出第二条最短路径后,dist中的内容更新为 ( )。

30. (2022) 下图是一个有10个活动的AOE网,时间余量最大的活动是 ( )。

31. (2023) 已知无向连通图G中各边的权值均为1。在下列算法中,一定能够求出图G中从某顶点到其余各顶点最短路径的是 ( )。
第七章 查找
(一)查找的基本概念
(二)顺序查找法
(三)分块查找法
(四)折半查找法
(五)树形查找
二叉搜索树;平衡二叉树;红黑树
(六)B树及其基本操作、B+树的基本概念
(七)散列(Hash)表
(八)查找算法的分析及应用
1. (2010) 已知一个长度为16的顺序表L,其元素按关键字有序排列,若采用折半查找法查找一个L中不存在的元素,则关键字的比较次数最多是 ( )。
2. (2015) 下列选项中,不能构成折半查找中关键字比较序列的是 ( )。
3. (2016) 在有n(n>1000)个元素的升序数组A中查找关键字x。查找算法的伪代码如下所示。
k=0; while(k<n 且 A[k]<x) k=k+3; if(k<n 且 A[k]==x) 查找成功; else if(k-1<n 且 A[k-1]==x) 查找成功; else if(k-2<n 且 A[k-2]==x) 查找成功; else 查找失败;
本算法与折半查找算法相比,有可能具有更少比较次数的情形是 ( )。
4. (2017) 下列二叉树中,可能成为折半查找判定树(不含外部结点)的是 ( )。

5. (2023) 对含600个元素的有序顺序表进行折半查找,关键字间的比较次数最多是 ( )。
6. (2024) 下列数据结构中,不适合直接使用折半查找的是 ( )。
7. (2009) 下列二叉排序树中,满足平衡二叉树定义的是 ( )。

8. (2010) 在下图所示的平衡二叉树中插入关键字48后得到一棵新平衡二叉树,在新平衡二叉树中,关键字37所在结点的左、右子结点中保存的关键字分别是 ( )。

9. (2011) 对下列关键字序列,不可能构成某二叉排序树中一条查找路径的是 ( )。
10. (2012) 若平衡二叉树的高度为6,且所有非叶结点的平衡因子均为1,则该平衡二叉树的结点总数为 ( )。
11. (2013) 在任意一棵非空二叉排序树T1中,删除某结点v之后形成二叉排序树T2,再将v插入T2形成二叉排序树T3。下列关于T1与T3的叙述中,正确的是 ( )。
12. (2013) 若将关键字1,2,3,4,5,6,7依次插入初始为空的平衡二叉树T,则T中平衡因子为0的分支结点的个数是 ( )。
13. (2015) 现有一棵无重复关键字的平衡二叉树(AVL),对其进行中序遍历可得到一个降序序列。下列关于该平衡二叉树的叙述中,正确的是 ( )。
14. (2018) 已知二叉排序树如下图所示,元素之间应满足的大小关系是 ( )。

15. (2019) 在任意一棵非空平衡二叉树(AVL树)T1中,删除某结点v之后形成平衡二叉树T2,再将v插入T2形成平衡二叉树T3。下列关于T1与T3的叙述中,正确的是 ( )。
16. (2020) 下列给定的关键字输入序列中,不能生成如下二叉排序树的是 ( )。

17. (2021) 给定平衡二叉树如下图所示,插入关键字23后,根中的关键字是 ( )。

18. (2024) 一棵二叉搜索树如下图所示,k1, k2, k3分别是对应结点中保存的关键字。子树T的任意一个结点中保存的关键字x满足的是 ( )。

19. (2009) 下列叙述中,不符合m阶B树定义要求的是 ( )。
20 (2012) 已知一棵3阶B树,如下图所示。删除关键字78得到一棵新B树,其最右叶结点中的关键字是 ( )。
21. (2013) 在一棵高度为2的5阶B树中,所含关键字的个数至少是 ( )。
22. (2014) 在一棵有15个关键字的4阶B树中,含关键字的结点个数最多是 ( )。
23. (2016) B+树不同于B树的特点之一是 ( )。
24. (2017) 下列应用中,适合使用B+树的是 ( )。
25. (2018) 高度为5的3阶B树含有的关键字个数至少是 ( )。
26. (2020) 依次将关键字5, 6, 9, 13, 8, 2, 12, 15插入初始为空的4阶B树后,根结点中包含的关键字是 ( )。
27. (2021) 在一棵高度为3的3阶B树中,根为第1层,若第2层中有4个关键字,则该树的结点数最多是 ( )。
28. (2022) 在下图所示的5阶B树T中,删除关键字260之后需要进行必要的调整,得到新的B树T1。下列选项中,不可能是T1根结点中关键字序列的是 ( )。

29. (2023) 下列关于非空B树的叙述中,正确的是 ( )。
30 (2011) 为提高散列表的查找效率,可以采取的正确措施是 ( )。
31. (2014) 用哈希(散列)方法处理冲突(碰撞)时,可能出现堆积(聚集)现象,下列选项中,会受堆积现象直接影响的是 ( )。
32. (2018) 现有长度为7、初始为空的散列表HT,散列函数H(k)=k%7,用线性探测再散列法解决冲突。将关键字22, 43, 15依次插入HT后,查找成功的平均查找长度是 ( )。
33. (2019) 现有长度为11且初始为空的散列表HT,散列函数是H(key)=key%7,采用线性探查(线性探测再散列)法解决冲突。将关键字序列87, 40, 30, 6, 11, 22, 98, 20依次插入HT后,HT查找失败的平均查找长度是 ( )。
34. (2022) 下列因素中,影响散列(哈希)方法平均查找长度的是 ( )。
35. (2023) 现有长度为5,初始为空的散列表HT,散列函数H(k)=(k+4)%5,用线性探查再散列法解决冲突。若将关键字序列2022, 12, 25依次插入HT,然后删除关键字25,则HT中查找失败的平均查找长度为 ( )。
第八章 排序
(一)排序的基本概念
(二)插入排序
直接插入排序;折半插入排序;希尔排序(shell sort)
(三)交换排序
冒泡排序(bubble sort);快速排序
(四)选择排序
简单选择排序;堆排序
(五)二路归并排序(merge sort)
(六)基数排序
(七)外部排序
(八)排序算法的分析和应用
1. (2012) 对同一待排序序列分别进行折半插入排序和直接插入排序,两者之间可能的不同之处是 ( )。
2. (2014) 用希尔排序方法对一个数据序列进行排序时,若第1趟排序结果为9,1,4,13,7,8,20,23,15,则该趟排序采用的增量(间隔)可能是 ( )。
3. (2015) 希尔排序的组内排序采用的是 ( )。
4. (2018) 对初始数据序列(8,3,9,11,2,1,4,7,5,10,6)进行希尔排序。若第一趟排序结果为(1,3,7,5,2,6,4,9,11,10,8),第二趟排序结果为(1,2,6,4,3,7,5,8,11,10,9),则两趟排序采用的增量(间隔)依次是 ( )。
5. (2010) 采用递归方式对顺序表进行快速排序。下列关于递归次数的叙述中,正确的是 ( )。
6. (2011) 为实现快速排序算法,待排序序列宜采用的存储方式是 ( )。
7. (2014) 下列选项中,不可能是快速排序第2趟排序结果的是 ( )。
8. (2019) 排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一“趟”。下列序列中,不可能是快速排序第二趟结果的是 ( )。
9. (2023) 使用快速排序算法对数据进行升序排序,若经过一次划分后得到的数据序列是68,11,70,23,80,77,48,81,93,88,则该次划分的枢轴是 ( )。
10. (2024) 使用快速排序算法对含n(n≥3)个元素的数组M进行排序,若第一趟排序将M中除枢轴外的n-1个元素划分为均不为空的P和Q两块,则下列叙述中,正确的是 ( )。
11. (2009) 若数据元素序列{11,12,13,7,8,9,23,4,5}是采用下列排序算法之一得到的第二趟排序后的结果,则该排序算法只能是 ( )。
12. (2010) 对一组数据(2, 12, 16, 88, 5, 10)进行排序,若前3趟排序结果如下:
第一趟排序结果: 2, 12, 16, 5, 10, 88
第二趟排序结果: 2, 12, 5, 10, 16, 88
第三趟排序结果: 2, 5, 10, 12, 16, 88
则采用的排序算法可能是 ( )。
13. (2012) 在内部排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。下列排序方法中,每趟排序结束都至少能够确定一个元素最终位置的方法是 ( )。
14. (2017) 在内部排序时,若选择了归并排序而未选择插入排序,则可能的理由是 ( )。
15. (2017) 下列排序方法中,若将顺序存储更换为链式存储,则算法的时间效率会降低的是 ( )。
16. (2019) 选择一个排序算法时,除算法的时空效率外,下列因素中,还需要考虑的是 ( )。
17. (2020) 对大部分元素已有序的数组排序时,直接插入排序比简单选择排序效率更高,其原因是 ( )。
18. (2022) 对数据进行排序时,若采用直接插入排序而不采用快速排序,则可能的原因是 ( )。
19. (2023) 下列排序算法中,不稳定的是 ( )。
20. (2013) 已知三叉树T中6个叶结点的权分别是2,3,4,5,6,7,T的带权(外部)路径长度最小是 ( )。
21. (2016) 对10TB的数据文件进行排序,应使用的方法是 ( )。
22. (2019) 设外存上有120个初始归并段,进行12路归并时,为实现最佳归并,需要补充的虚段个数是 ( )。
23. (2024) 在外排序中,利用败者树对初始为升序的归并段进行多路归并,败者树中记录“冠军”的结点保存的是 ( )。