算法本科08-09答案
- 格式:pdf
- 大小:232.53 KB
- 文档页数:4
一、判断(共计40分,每题2.5分)1、对连通图进行深度优先遍历可以访问到该图中的所有顶点。
()A. 正确B. 错误错误:【A】2、非空的双向循环链表中任何结点的前驱指针均不为空。
()A. 正确B. 错误错误:【A】3、先序遍历一棵二叉排序树得到的结点序列不一定是有序的序列。
()A. 正确B. 错误错误:【A】4、向二叉排序树中插入一个结点需要比较的次数可能大于该二叉树的高度。
()A. 正确B. 错误错误:【B】5、不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂度均为O(n)。
()A. 正确B. 错误错误:【A】6、线性表的顺序存储结构比链式存储结构更好。
()A. 正确B. 错误错误:【B】7、冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。
()A. 正确B. 错误错误:【A】8、设一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。
()A. 正确B. 错误错误:【B】9、调用一次深度优先遍历可以访问到图中的所有顶点。
()A. 正确B. 错误错误:【B】10、子串“ABC”在主串“AABCABCD”中的位置为2。
( )A. 正确B. 错误错误:【A】11、设初始记录关键字基本有序,则快速排序算法的时间复杂度为O(nlog2n)。
()A. 正确B. 错误错误:【B】12、线性表中的所有元素都有一个前驱元素和后继元素。
()A. 正确B. 错误错误:【B】13、满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。
()A. 正确B. 错误错误:【A】14、快速排序是排序算法中平均性能最好的一种排序。
()A. 正确B. 错误错误:【A】15、分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。
()A. 正确B. 错误错误:【A】16、层次遍历初始堆可以得到一个有序的序列。
()A. 正确B. 错误错误:【B】二、单选(共计60分,每题2.5分)17、设某哈夫曼树中有199个结点,则该哈夫曼树中有()个叶子结点。
攀枝花学院课程考核命题暨试卷印刷审批表注:1、一卷一份。
2、“院管课程”试卷印制须连同考试安排表一并上报。
3、每套试卷必须经过审批后方用于考核,审核、审批意见必须明确。
教研室审核结果综合评价及意见应从内容的科学性、表达的准确性、难易程度等方面进行审核。
2008 ~2009 学年度第 二 学期《操作系统》试卷(A 卷)适用年级专业:2006级计算机科学与技术专业 考 试 形 式:( )开卷、( √ )闭卷二级学院: 行政班级: 学 号: 教 学 班: 任课教师: 姓 名: 注:学生在答题前,请将以上内容完整、准确填写,填写不清者,成绩不计。
共 五 大题 54 小题。
答案请直接写在试卷上!一、单项选择题(30 小题,每小题1分,共30分 请在备选答案中选出一个正确答案,并将其字母填入下表,填在其它地方不计分。
)1、( )不是实时系统的基本特征。
A 、安全性B 、公平响应……………………………………………线………………………………………订………………………………………C、实时性D、高可靠2、正在运行的进程在信号量S上作P操作之后,当S<0,进程将进入信号量的()。
A、等待队列B、提交队列C、后备队列D、就绪队列3、并发进程失去封闭性特征,是指()。
A、多个相互独立的进程以各自的速度向前推进B、并发进程的执行结果与速度无关C、并发进程执行时,在不同时刻发生的错误D、并发进程共享公共变量,其执行结果与速度有关4、当一个进程处于()这样的状态时,称为等待状态。
A、它正等着进入磁盘B、它正等着进入内存C、它正等着输入一批数据D、它正等着CPU的控制权5、用户程序在用户态下使用特权指令将引起的中断是属于()。
A、程序中断B、硬件故障中断C、外部中断D、访管中断6、在磁盘上可以建立的物理文件有()。
A、用户文件B、记录式文件C、索引文件D、目录文件7、设备独立性是指,()。
A、I/O设备具有独立执行I/O功能的特性B、用户程序中使用的设备独立于具体的物理设备C、能独立实现设备共享的特性D、设备驱动程序独立于具体的物理设备的特性8、三个进程共享4台绘图仪,每个使用绘图仪的进程最多使用两台,规定每个进程一次仅允许申请一台,则该系统()。
算法工程师面试真题单选题100道及答案解析1. 以下哪种数据结构适合用于实现快速查找最大值和最小值?A. 栈B. 队列C. 堆D. 链表答案:C解析:堆可以快速地获取最大值和最小值。
2. 快速排序在最坏情况下的时间复杂度是?A. O(nlogn)B. O(n^2)C. O(n)D. O(logn)答案:B解析:快速排序在最坏情况下,每次划分都极不均匀,时间复杂度为O(n^2)。
3. 以下哪种算法常用于在未排序的数组中查找特定元素?A. 冒泡排序B. 二分查找C. 顺序查找D. 插入排序答案:C解析:顺序查找适用于未排序的数组查找特定元素。
4. 一个有向图的邻接表存储结构中,顶点的邻接点是按照什么顺序存储的?A. 随机顺序B. 顶点编号的大小顺序C. 插入的先后顺序D. 无法确定答案:C解析:邻接表中顶点的邻接点是按照插入的先后顺序存储的。
5. 深度优先搜索遍历图的时间复杂度是?A. O(n)B. O(n + e)C. O(n^2)D. O(e)答案:B解析:深度优先搜索遍历图的时间复杂度为O(n + e),其中n 是顶点数,e 是边数。
6. 以下哪种排序算法是稳定的排序算法?A. 快速排序B. 希尔排序C. 冒泡排序D. 选择排序答案:C解析:冒泡排序是稳定的排序算法。
7. 一个具有n 个顶点的无向完全图,其边的数量为?A. n(n - 1) / 2B. n(n - 1)C. n^2D. 2n答案:A解析:无向完全图的边数为n(n - 1) / 2 。
8. 动态规划算法的基本思想是?A. 分治法B. 贪心算法C. 把问题分解成多个子问题并保存子问题的解D. 回溯法答案:C解析:动态规划的基本思想是把问题分解成多个子问题并保存子问题的解,避免重复计算。
9. 以下关于哈希表的说法,错误的是?A. 哈希表的查找时间复杂度为O(1)B. 哈希冲突可以通过开放定址法解决C. 哈希表的空间复杂度是固定的D. 哈希函数的设计会影响哈希表的性能答案:C解析:哈希表的空间复杂度不是固定的,取决于元素数量和负载因子等。
08算法答案 1、B2、D3、A4、B5、C6、Linear probing Quadratic probing7、8、Two stacks can be implemented in a single array without overflows occurring ifthey grow from each end and towards the middle.* + +ghf+ + *ab +c de9、The elements of dynamic programming: optimal substructure, overlapping sub-problemsThe elements of greedy programming: optimal substructure, greedy choice propertyThey share the optimal substructure property, but we may not use dynamic programming when a greedy solution suffices, or reverse.The greedy choice property is that a globally optimal solution can be arrived at by making a locally optimal (greedy) choice. We must prove that a greedy choice at each step yields a globally optimal solution. First consider a globally optimal solution, and then modify the optimal solution, to make it to begin as a greedy choice.10、Any minimum spanning tree algorithm is OK.11、Searching(A)for i 1 to length(A)doif A[i] = vreturn ireturn NILLoop invariant proof:Initialization:Loop invariant holds before the first loop iteration. Now i=1, if A[i] = v, then we return the index 1, if A[i]! = v, then until now we are sure that there is no v in the array!Maintenance:Each iteration maintains the loop invariant. The for loop compare v to the current array element A[i], to make sure there is no v in A[1…i-1], if A[i] = v, then we return the index i.Termination:If there is an element matched, the index is returned from early detect, or the program will return a NIL if we come to the end. So the loop invariant holds.12、Use a recursion tree to give an asymptotically tight solution to the recurrence T(n) = T(αn) + T((1 - α)n) + cn, where α is a constant in the range 0 <α < 1 and c > 0 is also a constantBecause α is uncertain ,there is three situations:a. 0 < α < 1/2b. α = 1/2c. 1 > α > 1/2The value of α will influence the height of the recursion tree ,but the final answer is the same, so we just consider α = 1/2 here. From the recursion tree, we can calculate :T(n) =(log 1n α-+⎢⎥⎣⎦)*cn=Θ(log n n α-) =Θ(lg n n )13、 1)4.If a node is red, then both its children are black.5.For each node, all paths from the node to descendant leaves contain the same number of black nodes.2)Consider a red-black tree with black-height k. If every node is black the total number of internal nodes is 2k - 1. If only every other nodes is black we can construct a tree with 22k - 1 nodes.3)RB-INSERT(T , z ) 1 y ← nil [T ] 2 x ← root [T ] 3 while x ≠ nil [T ] 4 do y ← x5 if key [z ] < key [x ]6 then x ← left [x ]7 else x ← right [x ]8 p [z ] ← y9 if y = nil [T ]10 then root [T ] ← z11 else if key[z] < key[y]12 then left[y] ← z13 else right[y] ← z14 left[z] ← nil[T]15 right[z] ← nil[T]16 color[z] ← RED17 RB-INSERT-FIXUP(T, z)RB-INSERT-FIXUP(T, z)1 while color[p[z]] = RED2 do if p[z] = left[p[p[z]]]3 then y←right[p[p[z]]]4 if color[y] = RED5 then color[p[z]] ← BLACK▹ Case 16 color[y] ← BLACK ▹ Case 17 color[p[p[z]]] ← RED ▹ Case 18 z←p[p[z]] ▹ Case 19 else if z = right[p[z]]10 then z←p[z] ▹ Case 211 LEFT-ROTATE(T, z) ▹ Case 212 color[p[z]] ← BLACK ▹ Case 313 color[p[p[z]]] ← RED ▹ Case 314 RIGHT-ROTATE(T, p[p[z]]) ▹ Case 315 else (same as then clausewith "right" and "left" exchanged)16 color[root[T]] ← BLACK14、The final result is ((A1A2)((A3A4)(A5A6))) (Detailed process is omit here).15、1)k h-12)suppose the parent is i, if the student can give “(i-1)k+2<=n<=ik+1” , take it right3)(n-1)*k+1+i4) If it has a right brother, than it must not be the first child from right of its parent, which is (n-1)%k!=0, the number of its right brother is n+1。
(首页)试题纸(A卷)课程名称:算法设计与分析适用专业年级:2008级计算机、电本考生学号:考生姓名:………………………………………………………………………………………………………………………题号一二三四总分分数一、填空题(10空×2分,共20分) 1、算法在运行时占有的机器资源的量称为算法复杂性,主要包括(时间)和(空间)。
2、当一个算法的运行时间为n2+n+1时,由于n2+n+1与n2的数量级相等,则称n2为这个算法的(时间复杂度)。
3、多项式A(n)=a m n m+…+ a2n2+ a1n+ a0的上界为()。
4、递归算法设计的关键在于找出(递归关系)和(最小问题的解)。
5、(无后向性)是问题能用贪婪算法或动态规划方法求解的前提。
6、拆半查找、合并排序、二叉树遍历等算法中均采用了(分而治之)策略。
7、回溯算法是尝试搜索算法中最为基本的一种算法,其采用了一种走不通就掉头的思想作为其控制结构。
8、用分支限界法解决布线问题时,对问题解空间搜索尝试结束的标志是()。
二、判断题(10题×2分,共20分)1.若c是正常数,则O(cf(n))=O(f(n))。
v2.在最好情况下、最坏情况下、平均情况下的时间复杂度中,可操作性最好的且最有实际价值的,是最坏情况下的时间复杂度。
x3.好的算法在很大程度上取决于问题中数据所采用的数据结构。
v4.迭代模型是通过小规模问题的解逐步求解大规模问题的解,正好与递归算法设计相反。
v5.用贪婪算法解决零钱兑换问题时,总能找到问题的最优解。
x6.适用动态规划算法解决问题应该具有最优化原理和子问题重叠。
x7.深度优先搜索算法可以搜索到问题所有可能的解方案。
x8.解决马的遍历问题采用回溯法,对解空间树的搜索采用广度优先搜索方式v9.分支限界法的求解目标是找出满足约束条件的一个解或是在满足约束条件的解中找出使用某一目标函数值达到极大或极小的解。
x三、简答题(3题×6分,共18分)1、叙述分治算法和动态规划算法的基本思想,并比较两种算法的异同。
算法基础试题及答案一、单项选择题(每题2分,共10分)1. 以下哪个选项是算法的基本特征之一?A. 有穷性B. 可行性C. 确定性D. 以上都是答案:D2. 在算法设计中,以下哪个步骤是不必要的?A. 问题定义B. 算法描述C. 算法实现D. 算法测试答案:D3. 算法的时间复杂度通常用来描述什么?A. 算法的运行时间B. 算法的空间需求C. 算法的执行步骤数量D. 算法的输入数据大小答案:A4. 以下哪个不是算法设计的基本方法?A. 递归B. 排序C. 搜索D. 迭代答案:B5. 在算法分析中,大O符号表示什么?A. 算法执行的时间B. 算法执行的空间C. 算法执行的最坏情况D. 算法执行的平均情况答案:C二、填空题(每题2分,共10分)1. 算法的输入输出定义了算法的______,算法的步骤定义了算法的______。
答案:功能;实现2. 算法的时间复杂度和空间复杂度是衡量算法______的两个重要指标。
答案:效率3. 在算法设计中,______是一种通过重复执行代码块来实现的算法结构。
答案:循环4. 递归算法通常包括两个基本部分:______和______。
答案:基本情况;递归情况5. 在算法分析中,______复杂度描述了算法执行过程中所需的存储空间。
答案:空间三、简答题(每题5分,共20分)1. 请简述算法的五个基本特征。
答案:算法的五个基本特征包括有穷性、确定性、可行性、输入和输出。
有穷性指算法必须在执行有限步骤后结束;确定性指算法的每一步都必须有明确的定义;可行性指算法的每一步都必须足够基本,以至于可以精确地执行;输入指算法有0个或多个输入,以描述运算的对象和初始条件;输出指算法至少有一个输出,输出表示算法运行的结果。
2. 算法的时间复杂度和空间复杂度有什么区别?答案:时间复杂度主要关注算法执行所需的时间,它通常与算法中操作的数量有关,而空间复杂度则关注算法执行过程中所需的存储空间。
校招算法工程师真题单选题100道及答案解析1. 以下数据结构中,插入和删除操作平均时间复杂度最低的是()A. 链表B. 栈C. 队列D. 哈希表答案:D解析:哈希表在理想情况下,插入和删除操作的平均时间复杂度为O(1)。
链表、栈和队列的插入和删除操作平均时间复杂度通常为O(n)。
2. 冒泡排序在最坏情况下的比较次数是()A. n(n - 1) / 2B. n log₂nC. n²D. 2^n答案:C解析:冒泡排序在最坏情况下,需要比较n²次。
3. 一个具有n 个顶点的无向完全图,其边数为()A. n(n - 1) / 2B. n(n - 1)C. n²D. 2n答案:A解析:无向完全图中,每个顶点都与其他n - 1 个顶点相连,由于每条边被计算了两次,所以边数为n(n - 1) / 2 。
4. 深度优先搜索遍历图的时间复杂度为()A. O(n)B. O(n + e)C. O(n²)D. O(e log₂n)答案:B解析:深度优先搜索遍历图的时间复杂度为O(n + e),其中n 为顶点数,e 为边数。
5. 下列算法中,不能用于求解最短路径的是()A. Dijkstra 算法B. Floyd 算法C. 贪心算法D. 回溯算法答案:D解析:回溯算法主要用于解决组合优化等问题,不能用于求解最短路径。
Dijkstra 算法用于求解单源最短路径,Floyd 算法用于求解多源最短路径,贪心算法在某些情况下也可用于求解最短路径问题。
6. 二分查找在有序数组中的时间复杂度为()A. O(n)B. O(log₂n)C. O(n log₂n)D. O(n²)答案:B解析:二分查找每次将搜索范围缩小一半,时间复杂度为O(log₂n)。
7. 以下哪种排序算法在平均情况下性能最优()A. 快速排序B. 插入排序C. 冒泡排序D. 选择排序答案:A解析:快速排序在平均情况下的时间复杂度为O(n log₂n),性能最优。
算法导论参考答案算法导论参考答案算法导论是计算机科学领域中一本经典的教材,被广泛应用于计算机科学和工程的教学和研究中。
它涵盖了算法设计和分析的基本概念,以及各种常见算法的实现和应用。
本文将为读者提供一些算法导论中常见问题的参考答案,以帮助读者更好地理解和掌握这门课程。
1. 什么是算法?算法是一系列解决问题的步骤和规则。
它描述了如何将输入转换为输出,并在有限的时间内完成。
算法应具备正确性、可读性、健壮性和高效性等特点。
2. 如何分析算法的效率?算法的效率可以通过时间复杂度和空间复杂度来衡量。
时间复杂度表示算法执行所需的时间量级,常用的时间复杂度有O(1)、O(n)、O(logn)、O(nlogn)和O(n^2)等。
空间复杂度表示算法执行所需的额外空间量级,通常以字节为单位。
3. 什么是渐进符号?渐进符号用于表示算法的时间复杂度或空间复杂度的增长趋势。
常见的渐进符号有大O符号、Ω符号和Θ符号。
大O符号表示算法的上界,Ω符号表示算法的下界,Θ符号表示算法的平均情况。
4. 什么是分治法?分治法是一种算法设计策略,将问题分解为若干个子问题,并对子问题进行独立求解,最后将子问题的解合并得到原问题的解。
典型的分治算法有归并排序和快速排序。
5. 什么是动态规划?动态规划是一种通过将问题分解为相互重叠的子问题来求解的方法。
它通常用于求解具有重叠子问题和最优子结构性质的问题。
典型的动态规划算法有背包问题和最短路径问题。
6. 什么是贪心算法?贪心算法是一种通过每一步选择局部最优解来求解整体最优解的方法。
贪心算法通常不能保证得到全局最优解,但在某些问题上能够得到近似最优解。
典型的贪心算法有霍夫曼编码和最小生成树算法。
7. 什么是图算法?图算法是一类用于解决图结构相关问题的算法。
图由节点和边组成,节点表示对象,边表示对象之间的关系。
图算法包括图的遍历、最短路径、最小生成树和网络流等问题的求解。
8. 什么是NP完全问题?NP完全问题是一类在多项式时间内无法求解的问题。
算法基础试题答案算法基础试题是计算机科学和信息技术领域中非常重要的考核内容,它涉及到了算法的设计与分析、数据结构等方面。
本文将回答算法基础试题,并提供相应的解答。
1. 什么是算法?算法是一系列解决问题的清晰指令或步骤,可用于执行特定任务或解决问题。
算法具有输入、输出和明确定义的计算过程。
它是计算机科学中非常重要的基础概念之一。
2. 算法的特性有哪些?算法具有以下基本特性:- 有穷性:算法必须在执行有限步骤后终止。
- 确定性:算法的每一步必须明确定义,不会产生二义性。
- 可行性:算法的每个步骤必须可以通过基本操作来实现。
- 输入:算法具有输入,以便为输入数据提供计算或处理。
- 输出:算法必须生成输出,作为解决方案或结果。
3. 算法的复杂性如何评估?算法的复杂性可以通过时间复杂度和空间复杂度进行评估。
- 时间复杂度表示算法执行所需的时间量。
- 空间复杂度表示算法在执行过程中所需的额外存储空间。
4. 常见的算法设计方法有哪些?常见的算法设计方法包括:- 贪心算法:每一步都选择当前最优解,以希望达到全局最优解。
- 动态规划:将问题分解为子问题,并利用子问题的解来构建原始问题的解。
- 分治法:将问题分解为多个子问题,然后将子问题的结果合并为原始问题的解。
- 回溯法:通过尝试不同的选择,直到找到满足条件的解。
5. 数据结构对算法的影响是什么?数据结构选择对算法的效率有重要影响。
不同的数据结构适用于不同类型的问题,并且可以用来优化算法的执行时间和空间需求。
例如,使用哈希表可以加速查找操作,而使用数组可以实现快速的顺序访问。
6. 算法的正确性如何验证?算法的正确性可以通过两种方法验证:- 通过数学证明:通过形式化的数学证明来验证算法的正确性。
- 通过测试和验证:通过对算法执行大量测试用例进行验证,以确保算法能够产生正确的结果。
测试用例应该覆盖各种情况,包括正常情况、边界情况和异常情况。
7. 如何选择适合的算法?选择适合的算法取决于问题的特性和要求。