北林 数据结构期末考试(三) 填空题

合集下载

数据结构期末考试题及答案

数据结构期末考试题及答案

数据结构期末考试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,算法的时间复杂度是指()。

A. 执行算法所需要的计算工作量B. 执行算法所需要的存储空间C. 执行算法所需要的时间D. 执行算法所需要的内存大小答案:A2. 线性表的顺序存储结构和链式存储结构相比,其优点是()。

A. 插入和删除操作快B. 存储密度高C. 存储空间可以动态分配D. 存储空间利用率高答案:B3. 栈的基本运算中,不包括()。

A. 入栈B. 出栈C. 取栈顶元素D. 排序答案:D4. 在二叉树的遍历中,先序遍历的顺序是()。

A. 先根后子B. 先子后根C. 先左后右D. 先右后左答案:A5. 哈希表解决冲突的方法不包括()。

A. 分离链接法B. 线性探测法C. 链地址法D. 二分查找法答案:D6. 一个图的邻接矩阵表示法中,若第i行第j列的元素为1,则表示()。

A. 顶点i和顶点j之间有一条边B. 顶点i和顶点j之间没有边C. 顶点i和顶点j之间有n条边D. 顶点i和顶点j之间有m条边答案:A7. 在查找算法中,二分查找法适用于()。

A. 线性表B. 哈希表C. 树形结构D. 图结构答案:A8. 快速排序算法的时间复杂度在最坏情况下是()。

A. O(n)B. O(nlogn)C. O(n^2)D. O(2^n)答案:C9. 一个有n个顶点的无向图,其边数最多为()。

A. nB. n(n-1)/2C. n(n+1)/2D. 2n答案:B10. 以下哪个不是排序算法()。

A. 冒泡排序B. 选择排序C. 插入排序D. 归并排序答案:D二、填空题(每题2分,共20分)1. 在数据结构中,一个算法的空间复杂度是指算法执行过程中所需要的___________。

答案:存储空间2. 线性表的链式存储结构中,每个节点包含___________和___________。

答案:数据元素,指针3. 栈的特点是___________,___________。

数据结构期末考试及答案

数据结构期末考试及答案

一、单选题1、逻辑上通常可以将数据结构分为( )A.初等结构和组合结构B.顺序结构和链式结构C.线性结构和非线性结构D.动态结构和静态结构正确答案:C2、如果在数据结构中每个数据元素只可能有一个直接前驱,但可以有多个直接后继,则该结构是()。

A.栈B. 队列C.图D.树正确答案:D3、在长度为n的顺序表的第i个位置上插入一个元素(1<=i<=n+1),元素的移动次数为:()A.n-iB.i-1C.n-i+1D.i正确答案:C4、在非空线性链表中由p所指结点的后面插入一个由q所指的结点,应依次执行()A.q->next=p;p->next=q;B.p->next=q;q->next=p;C.q->next=p->next;p->next=q;D.q->next=p->next;p=q;正确答案:C5、已知栈的最大容量为4。

若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为()A.2,3,5,6,1,4B.1,4,6,5,2,3C.5,4,3,2,1,6D.3,2,5,4,1,6正确答案:D6、设栈S和队列Q初始均为空,若6个元素入栈的顺序为1、2、3、4、5、6,一个元素出栈以后立即入队列Q,若6个元素出队的顺序为2、4、3、6、5、1,则栈S的容量至少为()A.3B.5C.4D.2正确答案:A7、在计算机内实现递归算法时所需的辅助数据结构是()A.队列B.栈C.图D.树正确答案:B8、循环队列存储在数组A[0..m-1],则出队时的操作为()A.front=(front mod m)+1B.ront=(front+1)mod mC.front=front+1D.front=(front+1)mod (m-1)正确答案:B9、若以S和X分别表示进栈和退栈操作,则对初始状态为空的栈可以进行的栈操作系列合法的是()A.SXXSXSSXB.SSSXXSXXC.SXSSXXXXD.SXSXXSSX正确答案:B10、在具有m个单元的循环队列中,队头指针为front,队尾指针为rear,则队满的条件是()A.(front+1)%m==rearB.(rear+1)%m==frontC.front==rearD.rear+1==front正确答案:B11、在表长为n的顺序表上做插入运算,平均要移动的结点数为()A.n/4B.nC.n/3D.n/2正确答案:D12、元素的进栈次序为A,B,C,D,E,则退栈中不可能的序列是()A.E,D,C,B,AB.A,B,C,D,EC.E,A,B,C,DD.B,C,D,E,A正确答案:C13、下述二叉树中,()满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序。

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案第一部分:选择题(每题2分,共20分)1. 下面哪个数据结构是线性结构?A. 树B. 图C. 队列D. 网络流2. 下面哪个数据结构用于实现广度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆3. 下面哪个数据结构用于实现深度优先搜索算法?A. 栈B. 队列C. 散列表D. 堆4. 下面哪个数据结构用于实现快速排序算法?A. 栈B. 队列C. 散列表D. 堆5. 下面哪个数据结构用于实现优先队列?A. 栈B. 队列C. 散列表D. 堆6. 下面哪个数据结构用于实现哈希表?A. 栈B. 队列C. 散列表D. 堆7. 下面哪个数据结构用于实现最小树算法?A. 栈B. 队列C. 散列表D. 堆8. 下面哪个数据结构用于实现拓扑排序算法?A. 栈B. 队列C. 散列表D. 堆9. 下面哪个数据结构用于实现最短路径算法?A. 栈B. 队列C. 散列表D. 堆10. 下面哪个数据结构用于实现并查集算法?A. 栈B. 队列C. 散列表D. 堆第二部分:填空题(每题2分,共20分)1. 链表是一种______数据结构。

2. 二叉树的节点最多有______个子节点。

3. 堆是一种特殊的______。

4. 散列表的查找效率取决于______。

5. 图的遍历算法包括______和______。

6. 快速排序算法的平均时间复杂度为______。

7. 哈希表中的冲突解决方法有______和______。

8. 最小树算法包括______和______。

9. 最短路径算法包括______和______。

10. 并查集算法用于解决______问题。

第三部分:简答题(每题10分,共50分)1. 请简述栈和队列的区别。

2. 请简述二叉搜索树的特点。

3. 请简述哈希表的原理。

4. 请简述图的深度优先搜索算法。

5. 请简述最小树算法的原理。

第四部分:编程题(每题20分,共50分)1. 编写一个函数,实现链表的插入操作。

数据结构形考3

数据结构形考3

数据结构形考3:此次作业共36道题,100分,在形成性考核成绩中占20%。

题型包括:一、单项选择题(每小题2分,19题,共38分)二、判断题(每小题1分,10题,共10分)三、程序填空题(每小题6分,2题,共12分)四、综合应用题(每小题8分,5题,共40分)一、单项选择题(每小题2分,共38分)1.假定一棵二叉树中,双分支结点数为15,单分支结点数为30,则叶子结点数为()。

A.15B.16C.17D.472.二叉树第k层上最多有()个结点。

A.2kB.2k-1C.2k-1D.2k-13.将含有150个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为69的结点的双亲结点的编号为()。

A.3B.34C.35D.364.如果将给定的一组数据作为叶子数值,所构造出的二叉树的带权路径长度最小,则该树称为()。

A.哈夫曼树B.平衡二叉树C.二叉树D.完全二叉树5.在一棵度具有5层的满二叉树中结点总数为()。

A.31B.32C.33D.166.一棵完全二叉树共有6层,且第6层上有6个结点,该树共有()个结点。

A.38B.72C.31D.377.利用3、6、8、12这四个值作为叶子结点的权,生成一棵哈夫曼树,该树中所有叶子结点中的最长带权路径长度为()。

A.18B.16C.12D.308.在一棵树中,()没有前驱结点。

A.分支结点B.叶结点C.树根结点D.空结点9.设一棵采用链式存储的二叉树,除叶结点外每个结点度数都为2,该树结点中共有20个指针域为空,则该树有()个叶结点。

A.21B.22C.9D.1010.在一个图G中,所有顶点的度数之和等于所有边数之和的()倍。

A.1/2B.1C.2D.411.邻接表是图的一种()。

A.顺序存储结构B.链式存储结构C.索引存储结构D.散列存储结构12.图的深度优先遍历算法类似于二叉树的()遍历。

A.先序B.中序C.后序D.层次13.已知下图所示的一个图,若从顶点V1出发,按深度优先搜索法进行遍历,则可能得到的一种顶点序列为()。

数据结构期末考试题

数据结构期末考试题

数据结构期末考试题一、选择题(每题2分,共10分)1. 以下哪种数据结构是线性存储结构?A. 哈希表B. 二叉树C. 链表D. 图2. 在单链表中,删除节点的操作通常需要几个指针变量?A. 一个B. 两个C. 三个D. 四个3. 对于二叉搜索树,以下哪个操作的平均时间复杂度最低?A. 插入B. 删除C. 查找D. 遍历4. 在图的表示中,哪种方法可以有效地处理稠密图?A. 邻接矩阵B. 邻接表C. 边表D. 顶点表5. 快速排序算法的时间复杂度在最坏情况下是多少?A. O(n)B. O(nlogn)C. O(n^2)D. O(n^3)二、填空题(每题2分,共10分)1. 在数据结构中,___________ 是一种非线性数据结构,每个节点可以有两个或两个以上的子节点。

2. 栈和队列是两种常用的___________ 结构,它们分别支持后进先出和先进先出的特性。

3. 哈希表的___________ 越大,冲突的可能性越小。

4. 在图的遍历算法中,___________ 和___________ 是两种基本的遍历方法。

5. 归并排序是一种___________ 排序算法,它适用于大数据量的排序。

三、简答题(每题10分,共30分)1. 请简述数组和链表的区别,并举例说明它们各自的适用场景。

2. 什么是树的前序遍历、中序遍历和后序遍历?请用递归的方法实现二叉树的中序遍历。

3. 请解释深度优先搜索(DFS)和广度优先搜索(BFS)的基本原理,并比较它们的优缺点。

四、编程题(每题15分,共30分)1. 编写一个函数,实现对一个无向图的邻接矩阵表示,并完成对该图的深度优先搜索(DFS)遍历。

要求无向图的顶点和边数由用户输入,顶点用整数表示。

2. 设计并实现一个简单的文本编辑器,支持插入、删除和查找字符的功能。

要求使用链表来存储文本,并提供相应的操作函数。

五、综合题(20分)给定一组学生的成绩数据,要求设计一个成绩管理系统。

数据结构期末考试试题及答案

数据结构期末考试试题及答案

数据结构期末考试试题及答案一、选择题1. 在数据结构中,以下哪种数据结构是“先进先出”(FIFO)的?A. 栈B. 队列C. 链表D. 堆答案:B2. 哪种数据结构具有类似现实生活中“洋葱”的结构?A. 链表B. 树C. 图D. 堆答案:B3. 在常见的排序算法中,以下哪个算法具有最好的时间复杂度?A. 快速排序B. 插入排序C. 冒泡排序D. 选择排序答案:A4. 以下哪个数据结构可以解决“最短路径”问题?A. 队列B. 链表C. 树D. 图答案:D5. 在二叉搜索树中,节点的左子树的值都小于节点的值,右子树的值都大于节点的值。

这种特点被称为:A. 平衡性B. 完全性C. 左倾性D. 有序性答案:D二、填空题1. 在栈的操作中,插入元素的操作被称为______。

答案:push2. 哈希表通过______的方式快速查找元素。

答案:散列3. 在链表中,指向链表头部的指针被称为______。

答案:头指针4. 在图的遍历算法中,使用队列的遍历方式被称为______。

答案:广度优先搜索5. 大O表示法中,表示最坏情况下时间复杂度的记号是______。

答案:O三、简答题1. 请简要说明栈和队列的特点及应用场景。

答:栈是一种先进后出(FILO)的数据结构,只能在栈顶进行插入和删除操作。

栈的应用场景包括函数调用、表达式求值、撤销操作等。

队列是一种先进先出(FIFO)的数据结构,只能在队尾插入元素,在队头删除元素。

队列的应用场景包括多线程任务调度、消息队列等。

2. 简要描述堆排序的思想和步骤。

答:堆排序是一种基于二叉堆的排序算法。

首先,将待排序序列构建成一个大顶堆;然后,将堆顶元素与最后一个元素交换,即将最大元素放到已排序部分的末尾;接着,重新调整堆,将剩余元素重新构建成大顶堆;重复以上步骤,直到所有元素排序完成。

四、编程题请使用C语言实现一个二叉树的前序遍历算法。

```c#include <stdio.h>#include <stdlib.h>struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;};void preorderTraversal(struct TreeNode* root) {if (root != NULL) {printf("%d ", root->val); // 先访问根节点preorderTraversal(root->left); // 再遍历左子树preorderTraversal(root->right); // 最后遍历右子树}}int main() {// 构建二叉树struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));struct TreeNode* node1 = (struct TreeNode*)malloc(sizeof(struct TreeNode));struct TreeNode* node2 = (struct TreeNode*)malloc(sizeof(struct TreeNode));root->val = 1;node1->val = 2;node2->val = 3;root->left = node1;root->right = node2;node1->left = NULL;node1->right = NULL;node2->left = NULL;node2->right = NULL;// 调用前序遍历函数preorderTraversal(root);return 0;}```本文介绍了数据结构期末考试的试题及答案,涵盖了选择题、填空题、简答题和编程题等不同题型。

数据结构期末试题及答案

数据结构期末试题及答案

《数据结构》期末考试试卷一、选择题(单选题,每小题3分,共33分)1.已知某二叉树的中序、层序序列分别为DBAFCE、FDEBCA,则该二叉树的后序序列为 B 。

A.BCDEAF B.ABDCEF C.DBACEF D.DABECF 2.在11个元素的有序表A[1…11]中进行折半查找(⎣⎦2/)low+),查找元素(highA[11]时,被比较的元素的下标依次是 B 。

A.6,8,10,11 B.6,9,10,11 C.6,7,9,11 D.6,8,9,113.由元素序列(27,16,75,38,51)构造平衡二叉树,则首次出现的最小不平衡子树的根(即离插入结点最近且平衡因子的绝对值为2的结点)为 D 。

A.27 B.38 C.51 D.754.利用逐点插入法建立序列(50,72,43,85,75,20,35,45,65,30)对应的二叉排序树以后,查找元素30要进行 B 次元素间的比较。

A.4 B.5 C.6 D.75.循环链表的主要优点是 D 。

A.不再需要头指针了B.已知某个结点的位置后,很容易找到它的直接前驱结点C.在进行删除后,能保证链表不断开D.从表中任一结点出发都能遍历整个链表6.已知一个线性表(38,25,74,63,52,48),假定采用散列函数h(key)=key%7计算散列地址,并散列存储在散列表A[0…6]中,若采用线性探测方法解决冲突,则在该散列表上进行等概率查找时查找成功的平均查找长度为 C 。

A.1.5 B.1.7 C.2.0 D.2.37.由权值为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为C 。

A.23 B.37 C.44 D.468.在最好和最坏情况下的时间复杂度均为O(nlogn)且稳定的排序方法是 D 。

A.基数排序B.快速排序C.堆排序D.归并排序9.无向图G=(V,E),其中V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)}。

《数据结构》期末考试试题及答案

《数据结构》期末考试试题及答案

《数据结构》期末考试试题及答案一、选择题(每题2分,共20分)1. 下列哪种数据结构是线性结构?A. 栈B. 树C. 队列D. 图答案:A2. 在计算机科学中,什么是最基本的数据结构?A. 数组B. 链表C. 栈D. 树答案:C3. 下列哪种操作的时间复杂度是O(1)?A. 在链表中插入元素B. 在数组中查找元素C. 在树中删除节点D. 在图中寻找最短路径答案:B4. 下列哪种数据结构常常用于实现栈和队列?A. 数组B. 链表C. 树D. 图答案:A5. 下列哪种数据结构是有序的?A. 栈B. 队列C. 链表D. 图答案:C二、填空题(每题2分,共20分)1. 在数据结构中,栈是一种后进先出(____)的数据结构。

答案:线性表2. 队列是一种先进先出(____)的数据结构。

答案:线性表3. 链表是一种____数据结构,由一系列节点组成。

答案:非线性4. 二叉树是一种特殊的树,它的每个节点最多有两个____。

答案:子节点5. 哈希表是通过____函数将关键字映射到表中的位置来访问数据。

答案:哈希三、判断题(每题2分,共20分)1. 树是一种线性结构。

()答案:错误2. 链表的插入和删除操作时间复杂度都是O(1)。

()答案:错误3. 图是一种线性结构。

()答案:错误4. 哈希表是一种基于顺序结构的的数据结构。

()答案:错误5. 在数据结构中,时间复杂度O(n)表示算法随着输入规模的增加而线性增长。

()答案:正确四、简答题(每题10分,共30分)1. 请简述栈和队列的特点和应用场景。

答案:栈是一种后进先出(LIFO)的数据结构,应用场景包括函数调用栈、表达式求值等。

队列是一种先进先出(FIFO)的数据结构,应用场景包括任务队列、缓冲区等。

2. 请简述链表的优缺点。

答案:链表的优点包括动态扩容、插入和删除操作时间复杂度为O(1)、可以方便地实现各种复杂数据结构。

缺点包括占用内存空间较大、不如数组支持随机访问。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构填空题天涯古巷 出品1. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 n-i+1 个元素。

2. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动 n-i 个元素。

3. 在顺序表中访问任意一结点的时间复杂度均为 O(1) ,因此,顺序表也称为 随机存取 的数据结构。

4. 在单链表中,除了首元结点外,任一结点的存储位置由 其直接前驱结点的链域的值 指示。

5.对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为 O(1) ,在给定值为x的结点后插入一个新结点的时间复杂度为 O(n) 。

第三章1. 向量、栈和队列都是 线性 结构,可以在向量的 任何 位置插入和删除元素;对于栈只能在 栈顶 插入和删除元素;对于队列只能在 队尾 插入和 队首 删除元素。

2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为 栈顶 。

不允许插入和删除运算的一端称为 栈底 。

3. 队列 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

4. 在具有n个单元的循环队列中,队满时共有 n-1 个元素。

第四章1. 不包含任何字符(长度为0)的串 称为空串。

2. 由一个或多个空格(仅由空格符)组成的串 称为空白串。

3. 设S=“A;/document/Mary.doc”,则strlen(s)= 20 , “/”的字符定位的位置为 3 。

4. 子串的定位运算称为串的模式匹配; 被匹配的主串 称为目标串, 子串 称为模式。

5. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第 6 次匹配成功。

6. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为 (n-m+1)*m 。

7.设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为 8950 。

答:不考虑0行0列,利用列优先公式,2048+(57*60+31)*2=89508.求下列广义表操作的结果:(1) GetHead【((a,b),(c,d))】=== (a, b) ; //头元素不必加括号(2) GetHead【GetTail【((a,b),(c,d))】】=== (c,d) ;(3) GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== b ;(4) GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== (d) ;1.由3个结点所构成的二叉树有 5 种形态。

2. 一棵深度为6的满二叉树有 n1+n2=0+ n2= n0-1=31 个分支结点和 26-1 =32 个叶子。

注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。

3.一棵具有257个结点的完全二叉树,它的深度为 9 。

( 注:用⎣ log2(n) ⎦+1= ⎣ 8.xx ⎦+1=9)4. 设一棵完全二叉树有700个结点,则共有 350 个叶子结点。

5. 设一棵完全二叉树具有1000个结点,则此完全二叉树有 500 个叶子结点,有 499 个度为2的结点,有 1 个结点只有非空左子树,有 0 个结点只有非空右子树。

答:最快方法:用叶子数=[n/2]=500 ,n2=n0-1=499。

另外,最后一结点为2i属于左叶子,右叶子是空的,所以有1个非空左子树。

完全二叉树的特点决定不可能有左空右不空的情况,所以非空右子树数=0.6. 二叉树的基本组成部分是:根(N)、左子树(L)和右子树(R)。

因而二叉树的遍历次序有六种。

最常用的是三种:前序法(即按N L R次序),后序法(即按 L R N 次序)和中序法(也称对称序法,即按L N R次序)。

这三种方法相互之间有关联。

若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则它的后序序列必是 F E G H D C B 。

解:法1:先由已知条件画图,再后序遍历得到结果;法2:不画图也能快速得出后序序列,只要找到根的位置特征。

由前序先确定root,由中序先确定左子树。

例如,前序遍历BEFCGDH中,根结点在最前面,是B;则后序遍历中B一定在最后面。

法3:递归计算。

如B在前序序列中第一,中序中在中间(可知左右子树上有哪些元素),则在后序中必为最后。

如法对B的左右子树同样处理,则问题得解。

7.用5个权值{3, 2, 4, 5, 1}构造的哈夫曼(Huffman)树的带权路径长度是 33 。

解:先构造哈夫曼树,得到各叶子的路径长度之后便可求出WPL=(4+5+3)×2+(1+2)×3=33 (15)(9) (6) (注:两个合并值先后不同会导致编码不同,即哈夫曼编码不唯一) 4 5 3 (3) (注:合并值应排在叶子值之后)1 21. 图有 邻接矩阵 、 邻接表 等存储结构,遍历图有 深度优先遍历 、 广度优先遍历 等方法。

2. 有向图G用邻接表矩阵存储,其第i行的所有元素之和等于顶点i的 出度 。

3. n个顶点e条边的图,若采用邻接矩阵存储,则空间复杂度为 O(n2) 。

4. n个顶点e条边的图,若采用邻接表存储,则空间复杂度为 O(n+e) 。

5. 设有一稀疏图G,则G采用 邻接表 存储较省空间。

6. 一个有n个顶点的无向图最多有 n(n-1)/2 条边。

7. 图的逆邻接表存储结构只适用于 有向 图。

8. 已知一个图的邻接矩阵表示,删除所有从第i个顶点出发的方法是将邻接矩阵的第i行全部置0。

9. 图的深度优先遍历序列 不是 唯一的。

10. n个顶点e条边的图采用邻接矩阵存储,深度优先遍历算法的时间复杂度为 O(n2) ;若采 用邻接表存储时,该算法的时间复杂度为 O(n+e) 。

11. n个顶点e条边的图采用邻接矩阵存储,广度优先遍历算法的时间复杂度为 O(n2) ;若 采用邻接表存储,该算法的时间复杂度为 O(n+e) 。

12. 图的BFS生成树的树高比DFS生成树的树高 小或相等 。

13. 若要求一个稀疏图G的最小生成树,最好用 克鲁斯卡尔(Kruskal) 算法来求解。

14. 若要求一个稠密图G的最小生成树,最好用 普里姆(Prim) 算法来求解。

15. 用Dijkstra算法求某一顶点到其余各顶点间的最短路径是按路径长度 递增 的次序来得到最短路径的。

16. 拓扑排序算法是通过重复选择具有 0 个前驱顶点的过程来完成的。

第七章1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 顺序查找(线性查找) 。

2. 假设在有序线性表a[20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 2 ;比较四次查找成功的结点数为 8 ;平均查找长度为3.7 。

解:显然,平均查找长度=O(log2n)<5次(25)。

但具体是多少次,则不应当按照公式 )1(log 12++=n n n ASL 来计算(即(21×log221)/20=4.6次并不正确!)。

因为这是在假设n=2h-1的情况下推导出来的公式。

应当用穷举法罗列:全部元素的查找次数为=(1+2×2+4×3+8×4+5×5)=74; ASL=74/20=3.73. 在各种查找方法中,平均查找长度与结点个数n无关的查找方法是 哈希查找 。

1. 大多数排序算法都有两个基本的操作: 比较 和 移动 。

2. 在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第7个记录60插入到有序表时,为寻找插入位置至少需比较 3 次。

3. 在插入和选择排序中,若初始数据基本正序,则选用插入;若初始数据基本反序,则选用 选择 。

正序时两种方法移动次数均为0,但比较次数量级不同,插入法:n-1即O(n),选择法:O(n2)反序时两种方法比较次数量级相同,均为O(n2),但移动次数不同,插入法:O(n2),选择法:3(n-1)即O(n)4. 在堆排序和快速排序中,若初始记录接近正序或反序,则选用 堆排序 ;若初始记录基本无序,则最好选用 快速排序 。

5. 对于n个记录的集合进行冒泡排序,在最坏的情况下所需要的时间复杂度是 O(n^2) 。

若对其进行快速排序,在最坏的情况下所需要的时间复杂度是 O(n^2) 。

6. 对于n个记录的集合进行归并排序,所需要的平均时间是 O(nlog2n) ,所需要的附加空间是 O(n) 。

7. 对于n个记录的表进行2路归并排序,整个归并排序需进行 ┌log2n┐ 趟(遍)。

8. 设要将序列(Q, H, C, Y, P, A, M, S, R, D, F, X)中的关键码按字母序的升序重新排列,则:冒泡排序一趟扫描的结果是 H C Q P A M S R D F X Y ;二路归并排序一趟扫描的结果是 H Q C Y A P M S D R F X;快速排序一趟扫描的结果是 F H C D P A M Q R S Y X ;堆排序初始建堆的结果是 Y S X R P C M H Q D F A 。

(大根堆)9. 在堆排序、快速排序和归并排序中,若只从存储空间考虑,则应首先选取 堆排序 方法,其次选取 快速排序方法,最后选取归并排序方法;若只从排序结果的稳定性考虑,则应 选取归并排序方法;若只从平均情况下最快考虑,则应选取快速排序方法;若只从最坏情况下最快并且要节省内存考虑,则应选取堆排序方法。

相关文档
最新文档