图+查找+排序解答题,程序题
dfs经典例题

选择题:深度优先搜索(DFS)算法在遍历图时,采用的是哪种数据结构?A. 队列B. 栈(正确答案)C. 链表D. 数组在使用DFS进行图的遍历时,若图中存在环,则算法会如何?A. 陷入无限循环B. 正确遍历所有节点,每个节点只访问一次(正确答案)C. 报错并停止执行D. 遍历部分节点后停止DFS算法的时间复杂度主要取决于什么?A. 图中节点的数量(正确答案)B. 图中边的数量C. 图中环的数量D. 图的存储结构在进行DFS遍历时,若需要标记已访问的节点,通常采用什么方法?A. 使用一个与节点数量相等的布尔数组(正确答案)B. 使用一个与边数量相等的布尔数组C. 在节点对象中增加一个布尔字段D. 使用哈希表存储已访问的节点DFS算法在解决迷宫问题时,通常用于寻找什么?A. 最短路径B. 所有路径C. 一条从起点到终点的路径(正确答案)D. 迷宫的面积在使用DFS进行图的遍历时,若图不是连通的,则算法会如何?A. 只遍历连通的部分B. 遍历所有节点,但每个连通部分只访问一次(正确答案)C. 报错并停止执行D. 需要对每个连通部分分别调用DFSDFS算法相比于广度优先搜索(BFS)的主要区别是什么?A. 使用的数据结构不同(正确答案)B. 遍历的顺序不同C. 适用的场景不同D. 时间复杂度不同在使用DFS进行图的遍历时,若需要按照特定的顺序访问节点,应该如何做?A. 修改DFS算法的实现B. 在遍历过程中加入排序操作C. 在遍历前对节点进行排序,并按照排序后的顺序进行遍历(正确答案)D. 无法实现特定的访问顺序DFS算法在解决一些问题时,为什么有时需要回溯?A. 为了撤销上一次的选择,尝试其他可能性(正确答案)B. 为了节省空间复杂度C. 为了提高时间复杂度D. 为了简化算法的实现。
计算机专业基础综合数据结构(图)历年真题试卷汇编4

计算机专业基础综合数据结构(图)历年真题试卷汇编4(总分:58.00,做题时间:90分钟)一、综合题(总题数:7,分数:14.00)1.已知一图如下图所示:(1)写出全部拓扑排序;(2)以V1为源点,以V8为终点,给出所有事件允许发生的最早时间和最晚时间,并给出关键路径;(3)求V1结点到各点的最短距离。
【北京邮电大学2000五(15分)】__________________________________________________________________________________________正确答案:(正确答案:关键路径有3条,长17。
各事件允许发生的最早时间和最晚时间略。
V1→V2→V6→V8,V1→V3→V5→V7→V8,V1→V7→V8→V1→V4→V5→V8 (3)V1结点到其他各结点的最短距离为:2,3,6,12,10,15,16。
)2.(1)对于有向无环图,叙述求拓扑有序序列的步骤;(2)对于以下的图,写出它的四个不同的拓扑有序序列。
【南开大学1998二(12分)】__________________________________________________________________________________________ 正确答案:(正确答案:(1)对有向图,求拓扑序列步骤为: 1)在有向图中选一个没有前驱(即入度为零)的顶点并输出。
2)在图中删除该顶点及所有以它为尾的弧。
3)重复1)和2),直至全部顶点输出,这时拓扑排序完成;否则,图中存在环,拓扑排序失败。
(2)这里使用形式化描述方法,当有多个顶点可以输出时,将其按序从上往下排列,这样不会丢掉拓扑序列。
这里只画出从顶点1开始的所有可能的拓扑序列,从顶点3开始的拓扑序列可类似画出。
)3.有向图的拓扑排序能否用图的深度搜索模式来查找?若能,请简述方法;若不能,请简述原因。
【西北大学2000二、8(5分)】__________________________________________________________________________________________ 正确答案:(正确答案:图的深度优先遍历可用于拓扑排序。
第3章-图搜索与问题求解作业讲解

第3章作业题参考答案2.综述图搜索的方式和策略。
答:用计算机来实现图的搜索,有两种最基本的方式:树式搜索和线式搜索。
树式搜索就是在搜索过程中记录所经过的所有节点和边。
线式搜索就是在搜索过程中只记录那些当前认为是处在所找路径上的节点和边。
线式搜索的基本方式又可分为不回溯和可回溯的的两种。
图搜索的策略可分为:盲目搜索和启发式搜索。
盲目搜索就是无向导的搜索。
树式盲目搜索就是穷举式搜索。
而线式盲目搜索,对于不回溯的就是随机碰撞式搜索,对于回溯的则也是穷举式搜索。
启发式搜索则是利用“启发性信息”引导的搜索。
启发式搜索又可分为许多不同的策略,如全局择优、局部择优、最佳图搜索等。
5.(供参考)解:引入一个三元组(q0,q1,q2)来描述总状态,开状态为0,关状态为1,全部可能的状态为:Q0=(0,0,0) ; Q1=(0,0,1); Q2=(0,1,0)Q3=(0,1,1) ; Q4=(1,0,0); Q5=(1,0,1)Q6=(1,1,0) ; Q7=(1,1,1)。
翻动琴键的操作抽象为改变上述状态的算子,即F={a, b, c}a:把第一个琴键q0翻转一次b:把第二个琴键q1翻转一次c:把第三个琴键q2翻转一次问题的状态空间为<{Q5},{Q0 Q7}, {a, b, c}>问题的状态空间图如下页所示:从状态空间图,我们可以找到Q5到Q7为3的两条路径,而找不到Q5到Q0为3的路径,因此,初始状态“关、开、关”连按三次琴键后只会出现“关、关、关”的状态。
6.解:用四元组(f 、w 、s 、g)表示状态, f 代表农夫,w 代表狼,s 代表羊,g 代表菜,其中每个元素都可为0或1,用0表示在左岸,用1表示在右岸 。
初始状态S0:(0,0,0,0) 目标状态:(1,1,1,1) 不合法的状态:(1,0,0,*),(1,*,0,0),(0,1,1,*),(0,*,1,1)操作集F={P1,P2,P3,P4,Q1,Q2,Q3,Q4}(0,0,0)(1,0,1)(0,0,1) (0,1,0)(1,1,0)(1,0,0)(0,1,0)(1,1,1)acabacabcbbc方案有两种:p2→q0 →p3→q2 →p2 →q0 →p2p2→q0 →p1→q2 →p3→q0→p212 一棵解树由S0,A,D,t1,t2,t3组成;另一棵解树由S0,B,E,t4,t5组成。
高中程序图练习题及答案

程序图类型一:读程序图计算结果例题1:如左下图程序图,输出的结果k = 。
例题1:答案:k =3 类型二:根据目的选择正确的程序图 4321,,,x x x x 的平均数例题2:如右上图程序图,是计算的程序图,则判断框填入的是( )A.4≤iB.5≤iC.4≥iD.5≥i 例题2:答案: D二、程序图高考真题1、某城市缺水问题比较突出,为了制定节水管理办法,对全市居民某年的月均用水量进行了抽样调查,其中位居民的月均用水量分1x ,…,4x (单别为位:吨)。
根据图3所示的程序框图,若1x ,2x ,3x ,4,分别为1,1.5,1.5,2,则输出的结果s 为 。
2、4所示的程序框图,若输入n的值为6,则输出s 的值为( )A.105B.16C.15D.13、执行如图1所示的程序图,若输入n 的值为3,则输出s 的值是( )A.1B.2C.4D.7高考真题参考答案: 1、23分析:这题只考察了学生的读图。
2、C 分析:这题还是考察了学生的读图,难度不大。
3、7 分析:这题还是考察学生的读图,非常简单。
总结:这类型的考题主要考察考生的读图,以及填相应的判断条件,最多也就结合其他相关的知识。
程序的循环次数一般不大,只要按规章制度办事,细心和耐心,一定能做出来。
二、程序图练习1、如图1,执行下面的程序框图,输入x=-2,h=0.5,那么输出的各个数和等于( )A.3B.3.5C.4D.4.5 开始 k=2k=k+1a=4k b=k 2a>b ? 否是输出k结束开始i=1S=0 S=S+x it=iS否是输出t结束 i=i+1开始 输入n i<ns=s ×i i = i +2 是否 输出s 结束i=1,s=1 开始输入ni=1,s=1 i ≤n s=s+(i-1)i=i+1输出s结束是 否2、如图所示程序框图,输出的结果是(A.21B.32程序图练习参考答案:1、B2、C 三、课后巩固1.如图程序框图,输出的S 为( )2.如图是一个算法流程图,则输出的k课后巩固参考答案:1、C 分析:考查输出值,小心运算就行。
深度优先和广度优先例题

深度优先和广度优先例题一、以下哪个图遍历算法会首先访问所有邻居节点,然后再深入下一层?A. 深度优先搜索B. 广度优先搜索C. Dijkstra算法D. A*搜索算法(答案:B)二、在深度优先搜索中,使用什么数据结构来跟踪访问节点?A. 队列B. 栈C. 链表D. 树(答案:B)三、给定一个无向图,如果从节点A开始广度优先搜索,下列哪个节点会最先被访问(假设所有边的权重相同)?A. 与A直接相连的节点BB. 与A距离两跳的节点CC. 与A距离三跳的节点DD. 无法确定(答案:A)四、在广度优先搜索中,如果某个节点被访问过,则其状态会被标记为?A. 已访问B. 未访问C. 正在访问D. 可访问(答案:A)五、深度优先搜索在处理哪种类型的问题时可能更有效?A. 查找最短路径B. 生成所有可能的解C. 计算最小生成树D. 求解线性方程组(答案:B)六、下列哪个选项不是深度优先搜索的特点?A. 易于实现递归版本B. 可能会陷入无限循环(在无终止条件的图中)C. 总是能找到最短路径D. 适用于解空间较大的问题(答案:C)七、在广度优先搜索中,节点的访问顺序是?A. 按照深度优先B. 按照宽度优先(即逐层访问)C. 随机访问D. 按照节点编号顺序(答案:B)八、给定一个有向图,如果从节点A到节点B存在多条路径,深度优先搜索找到的路径是?A. 一定是最短路径B. 一定是最长路径C. 可能是其中任意一条路径D. 总是找到权重和最小的路径(答案:C)九、在深度优先搜索中,当遇到一个新节点时,首先将其?A. 加入队列B. 压入栈C. 标记为已访问D. 忽略(答案:B)十、广度优先搜索和深度优先搜索在遍历图时的主要区别在于?A. 使用的数据结构不同B. 访问节点的顺序不同C. 适用于的图结构不同D. A和B都正确(答案:D)。
算法图解练习题

算法图解练习题算法图解是一本介绍算法和数据结构的图书,通过简洁清晰的插图和易懂的文字,帮助读者理解和应用各种常见的算法和数据结构。
为了进一步加深对算法图解的学习和应用,下面为你提供一些练习题,供你巩固所学知识。
1. 二分查找假设有一个有序列表,其中包含以下元素:[2, 4, 5, 7, 10, 12, 14, 18, 20],请编写一个二分查找的算法,从该列表中搜索目标元素的位置并返回。
2. 选择排序给定一个无序的列表:[5, 3, 8, 6, 2, 7],使用选择排序算法对其进行排序,输出排序后的结果。
3. 快速排序给定一个无序的列表:[9, 1, 6, 8, 4, 3, 2, 10, 7, 5],使用快速排序算法对其进行排序,输出排序后的结果。
4. 广度优先搜索请编写一个广度优先搜索的算法,用于搜索以下图的最短路径:A/ \B C/ \ \D E F/G上述图以邻接表的形式表示,其中每个节点以字母表示。
使用队列作为辅助数据结构,按照广度优先的顺序遍历图,并输出搜索的结果。
5. 狄克斯特拉算法给定以下图的权重和邻接表表示,其中每个节点以字母表示。
使用狄克斯特拉算法计算从节点A到节点H的最短路径,并输出最短路径的节点以及对应的总权重。
图的邻接表表示:A -> [(B, 4), (H, 8)]B -> [(A, 4), (C, 8), (H, 11)]C -> [(B, 8), (D, 7), (F, 4)]D -> [(C, 7), (E, 9), (F, 14)]E -> [(D, 9), (F, 10)]F -> [(C, 4), (D, 14), (E, 10), (G, 2)]G -> [(F, 2), (H, 1)]H -> [(A, 8), (B, 11), (G, 1)]以上是一些算法图解的练习题,希望能够帮助你巩固所学的算法知识。
在解答问题时,可以用适当的伪代码或编程语言来描述算法的实现过程。
排序练习题及答案

排序练习题及答案排序练习题及答案排序是一种常见的算法操作,它在计算机科学中发挥着重要的作用。
通过排序,我们可以按照一定的规则将一组数据按照升序或降序进行排列,使得数据更易于查找和处理。
在编程和算法学习中,排序练习题是一种常见的训练方式,它可以帮助我们熟悉不同的排序算法,并提升我们的编程能力。
下面,我将给大家介绍几道常见的排序练习题及其答案。
1. 冒泡排序冒泡排序是一种基本的排序算法,它通过不断比较相邻的元素,并交换位置来实现排序。
下面是一个冒泡排序的练习题及答案:题目:给定一个整数数组arr,使用冒泡排序算法对其进行升序排序。
答案:```pythondef bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]return arrarr = [64, 34, 25, 12, 22, 11, 90]print(bubble_sort(arr))```2. 快速排序快速排序是一种高效的排序算法,它通过选择一个基准元素,将数组分为两部分,并对这两部分进行递归排序来实现排序。
下面是一个快速排序的练习题及答案:题目:给定一个整数数组arr,使用快速排序算法对其进行升序排序。
答案:```pythondef quick_sort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr)//2]left = [x for x in arr if x < pivot]middle = [x for x in arr if x == pivot]right = [x for x in arr if x > pivot]return quick_sort(left) + middle + quick_sort(right)arr = [64, 34, 25, 12, 22, 11, 90]print(quick_sort(arr))```3. 归并排序归并排序是一种稳定的排序算法,它通过将数组分成两个子数组,分别对其进行排序,然后再将两个有序的子数组合并成一个有序数组来实现排序。
dfs和bfs题目整理和分类

DFS和BFS是图论中常用的两种遍历算法,它们在解决各种图论问题和编程竞赛中都有着重要的应用。
以下是对一些经典的DFS和BFS题目进行整理和分类。
一、DFS题目1. 树的遍历(1)给定一棵树,要求按照先序、中序、后序的方式遍历这棵树。
2. 深度优先搜索(1)给定一个有向图,从起点开始进行深度优先搜索,找出所有可达的节点。
(2)给定一个有向图,判断该图中是否存在环。
3. 拓扑排序(1)给定一个有向无环图,对图中的节点进行拓扑排序。
4. 连通分量(1)给定一个无向图,求图中的连通分量个数。
(2)给定一个无向图,求图中的每个连通分量包含的节点个数。
5. 非递归DFS(1)给定一个有向图,使用非递归的方式进行深度优先搜索。
二、BFS题目1. 广度优先搜索(1)给定一个有向图,从起点开始进行广度优先搜索,找出所有可达的节点。
(2)给定一个无向图,从起点开始进行广度优先搜索,找出所有可达的节点。
2. 最短路径(1)给定一个无向图,求从起点到终点的最短路径。
(2)给定一个有向图,求从起点到终点的最短路径。
3. 01矩阵(1)给定一个01矩阵,每个元素是0或1,求从左上角到右下角的最短路径长度。
4. 笛卡尔积(1)给定两个集合A和B,求它们的笛卡尔积。
5. 层次遍历(1)给定一棵树,使用广度优先搜索进行层次遍历。
以上是对一些常见的DFS和BFS题目进行整理和分类。
在解决这些问题时,可以根据具体情况选择合适的算法来进行求解,有效地应用DFS和BFS算法来解决实际问题。
希望以上内容对大家有所帮助。
对于DFS和BFS这两种遍历算法来说,在实际应用中有许多题目是可以通过它们来解决的。
下面继续介绍一些与DFS和BFS相关的经典问题及其解决方法。
6. 单词接龙(1)给定两个单词beginWord和endWord,以及一个字典,找出从beginWord到endWord的最短转换序列的长度。
每次转换只能改变一个字母,并且转换后的单词必须存在于字典中。
算法考试题及答案

算法考试题及答案一、选择题(每题5分,共20分)1. 以下哪个算法的时间复杂度是O(n^2)?A. 冒泡排序B. 快速排序C. 二分查找D. 归并排序答案:A2. 在图的遍历中,深度优先搜索(DFS)使用的是哪种数据结构?A. 栈B. 队列C. 链表D. 哈希表答案:A3. 哈希表解决冲突的方法不包括以下哪种?A. 分离链接法B. 开放寻址法C. 链地址法D. 排序法答案:D4. 以下哪个算法不是动态规划算法?A. 斐波那契数列B. 0/1背包问题C. 最长公共子序列D. 二分查找答案:D二、填空题(每题5分,共20分)1. 在算法分析中,____复杂度表示算法执行时间与输入数据量的关系。
答案:时间2. 动态规划算法的核心是____问题,通过将问题分解为更小的子问题来解决。
答案:最优子结构3. 在排序算法中,____排序是一种不稳定的排序算法,它通过不断地交换相邻元素来达到排序的目的。
答案:冒泡4. 在图论中,____树是一种特殊的树,其中每个节点都只有一个父节点。
答案:二叉三、简答题(每题10分,共30分)1. 请简述贪心算法的基本思想。
答案:贪心算法的基本思想是在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法。
贪心算法不保证能得到最优解,但在某些情况下它能产生近似最优解。
2. 什么是分治算法?请举例说明。
答案:分治算法是一种递归算法,它将一个难以直接解决的大问题分解成若干个规模较小的相同问题,递归解决这些子问题,然后再合并这些子问题的解以解决原始问题。
例如,归并排序就是分治算法的一个典型例子,它将一个数组分成两半,分别排序,然后再合并。
3. 请解释什么是时间复杂度,并给出一个例子。
答案:时间复杂度是衡量算法运行时间的量度,它描述了算法执行时间随输入数据规模增长的变化趋势。
例如,对于一个简单的线性搜索算法,其时间复杂度是O(n),意味着搜索的时间随着数据规模的增加而线性增长。
数据结构图,查找,内排序的练习及答案

数据结构图,查找,内排序的练习及答案数据结构课后练习习题要求:此次练习不要求上交,只是帮助⼤家掌握知识点,便于复习。
第⼋章图⼀.单项选择题(20分)1. 带权有向图G ⽤邻接矩阵A 存储,则Vi 的⼊度等于A 中___D______A. 第i ⾏⾮∞的元素只和B. 第i 列⾮∞的元素之和C. 第i ⾏⾮∞且⾮0的元素之和D. 第i 列⾮∞且⾮0的元素个数2. ⽆向图的邻接矩阵是⼀个___A____A. 对称矩阵B. 零矩阵C. 上三⾓阵D. 对⾓矩阵3. 在⼀个⽆向图中,所有顶点的度之和等于边数的__C____倍A. 1/2B. 1C. 2D. 44. ⼀个有n 个顶点的⽆向图最多有___C____条边。
A. nB. n(n-1)C. n(n-1)/2D.2n5. 对于⼀个具有n 个顶点的⽆向图,若采⽤邻接矩阵表⽰,则该矩阵⼤⼩是__D_____A. nB. 2)1(?nC. n-1D. 2n6. ⼀个有向图G 的邻接表存储如右图所⽰,现按深度优先搜索遍历,从V1出发,所得到的顶点序列是___B_____。
A. 1,2,3,4,5B. 1,2,3,5,4C. 1,2,4,5,3D. 1,2,5,3,47. 对右图所⽰的⽆向图,从顶点V1开始进⾏深度优先遍历,可得到顶点访问序列__A______(提⽰:可先画出邻居表图再遍历)A. 1 2 4 3 5 7 6B. 1 2 4 3 5 6 7C. 1 2 4 5 6 3 7D. 1 2 3 4 5 6 78. 如果从⽆向图的任⼀顶点出发进⾏⼀次深度优先搜索即可访问所有顶点,则该图⼀定是__B_____A. 完全图B. 连通图C.有回路D. ⼀棵树9. 任何⼀个⽆向连通图___B___最⼩⽣成树(提⽰:注意最⼩⽣成树的定义,此题易错)A. 只有⼀棵B. ⼀棵或多棵C. ⼀定有多棵D.可能不存在11. 若图的邻接矩阵中主对⾓线上的元素全是0,其余元素全是1,则可以断定该图⼀定是_D_____。
查找排序习题及答案 (1)

查找排序习题及答案一、选择题1 若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( C )。
A. (n-1)/2 B. n/2 C. (n+1)/2 D. n2 用二分(对半)查找表的元素的速度比用顺序法( D )A必然快 B. 必然慢 C. 相等 D. 不能确定3 下面关于m阶B树说法正确的是( B )①每个结点至少有两棵非空子树;②树中每个结点至多有m一1个关键字;③所有叶子在同一层上; ④当插入一个数据项引起B树结点分裂后,树长高一层。
A.①②③ B. ②③ C. ②③④ D. ③4 将10个元素散列到100000个单元的哈希表中,则( C )产生冲突。
A. 一定会B. 一定不会C. 仍可能会5 下列内部排序算法中:A.快速排序 B.直接插入排序 C. 二路归并排序 D. 简单选择排序 E. 起泡排序F. 堆排序(1)其比较次数与序列初态无关的算法是( C,D )(2)在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k<<n)的情况下,排序效率最高的算法是( B )(3)排序的平均时间复杂度为O(n•logn)的算法是(A,C,F)为O(n•n)的算法是(B,D,E)6 下列序列中,( C )是执行第一趟快速排序后所得的序列。
A. [68,11,18,69] [23,93,73]B. [68,11,69,23] [18,93,73]C. [93,73] [68,11,69,23,18]D. [68,11,69,23,18] [93,73]7 下列四个序列中,哪一个是堆( C )。
A. 75,65,30,15,25,45,20,10B. 75,65,45,10,30,25,20,15C. 75,45,65,30,15,25,20,10D. 75,45,65,10,25,30,20,158 排序方法有许多种,(1)C法从未排序的序列中依次取出元素,与已排序序列(初始时为空)中的元素作比较,将其放入已排序序列的正确位置上;(2)A法从未排序的序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端;交换排序方法是对序列中的元素进行一系列比较,当被比较的两元素逆序时,进行交换;(3)B和(4)D是基于这类方法的两种排序方法,而(4)D是比(3)B效率更高的方法;(5)G法是基于选择排序的一种排序方法,是完全二叉树结构的一个重要应用。
查找排序习题答案

O(n) 5. 以折半查找方法在一个查找表上进行查找时,该查找表必须组织 成________存储的________表。5. 顺序 有序 6. 从有序表(12,18,30,43,56,78,82,95)中分别折半查找43和56元 素时,其比较次数分别为________和________。 6. 1,3 7. 假定对长度n=50的有序表进行折半查找,则对应的判定树高度为 ________,最后一层的结点数为________。7. 6, 19 10. 在一棵二叉排序树中,每个分支结点的左子树上所有结点的值 一定________该结点的值,右子树上所有结点的值一定________该结点 的值。10. 小于,大于 13. 向一棵二叉排序树中插入一个元素时,若元素的值小于根结点的 值,则接着向根结点的________插入,若元素的值大于根结点的值,则 接着向根结点的________插入。13. 左子树,右子树 16. 假定对线性表(38,25,74,52,48)进行哈希存储,采用H(K)=K % 7作为哈希函数,采用线性探测法处理冲突,则在建立哈希表的过程 中,将会碰到________次存储冲突。16. 5 17. 假定对线性表(38,25,74,52,48)进行哈希存储,采用H(K)=K % 7作为哈希函数,采用线性探测法处理冲突,则平均查找长度为 ________。17. 2 19. 对线性表(18,25,63,50,42,32,90)进行哈希存储时,若选 用H(K)=K % 9作为哈希函数,则哈希地址为0的元素有________个,哈 希地址为5的元素有________个。19. 3, 2 三、应用题 1. 已知一个顺序存储的有序表为 (15,26,34,39,45,56,58,63,74,76),试画出对应的折半查找判定树, 求出其平均查找长度。 1. 折半查找判定树如图7-3所示,平均查找长度等于29/10。图7-3中 的结点与有序表中元素的对应关系如下表所示。
广度优先搜索练习题

广度优先搜索练习题
很多问题都可以用广度优先搜索进行处理,如翻币问题(参见归纳策略中的移动棋子问题)、最短路径问题(参见动态规划)等。
1)用字符串的方式‘283164705'-> '123804765'处理8数码难题。
2)电子老鼠闯迷宫。
如下图12×12方格图,找出一条自入口(2,9)到出口(11,8)的最短路径。
3)如下图:求图中被*围成的封闭区域的面积(方格的个数不包括*所在的方格)。
4)分酒问题:有一酒瓶装有8斤酒,没有量器,只有分别装5斤和3斤的空酒瓶。
设计一程序将8斤酒分成两个4斤,并以最少的步骤给出答案。
5)移动棋子游戏:在下列所示的10个格子里,前面两格是空格,后面相间的放着4个A和4个B
若每次可移动任意两个相邻的棋子进入空格,移动时两棋子不得更动其原来次序目标是将4个A连在一起,空格位置不限。
试编程,求出一种方案并输出每移动一次后得棋子状态。
树图查找排序复习讲解【范本模板】

树一、判断题:1。
二叉树是一棵无序树。
(×)2.在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分别进行中序遍历和后序遍历,则具有相同的结果。
(√)3。
度为二的有序树等价于二叉树。
(√)4.树的带权路径长度最小的二叉树中必定没有度为1的结点。
(√)5。
哈夫曼树一定是满二叉树。
(×)6.满二叉树也是完全二叉树.(√)7。
设与一棵树T所对应的二叉树为BT,则与T中的叶子结点所对应的BT中的结点也一定是叶子结点。
(×)8.将一棵树转换成二叉树后,根结点没有左子树(×)9。
已知一棵二叉树的前序序列和后序序列可以唯一地构造出该二叉树。
(√)10用二叉树的前序遍历和中序遍历可以导出树的后序遍历.(√)11.在完全二叉树中,若某结点无左孩子,则它必是叶结点。
(√)。
12.任何一棵二叉树都有n0=n2+1的关系式.(√)13.已知一棵树的前序遍历和后序遍历序列能唯一地确定这棵树.( √)二、填空题1.假定一棵二叉树的结点个数为32,则它的最小深度为___6___,最大深度为:32.2.在一棵二叉树中,度为2的结点有5个,度为1的结点有6个,那么叶子结点有__6____ 个.3.树的双亲表示法便于实现涉及到___双亲___的操作,孩子表示法便于实现涉及到孩子的操作。
4.对于一颗具有n个结点的二叉树,对应二叉链表中指针域有__n—1__个用于指向子结点。
5.下图所示二叉树存储在一维数组中,则元素F的下标位置为___11___。
(A为1)6.高度为k的二叉树具有的结点数目,最少为___ K ___,最多为___2K—1___。
7.对任何一棵二叉树,若n0,n1,n2分别是度为0,1,2的结点的个数,则n0=__ n2+1__.8.一棵含有16个结点的完全二叉树,对他按层编号,对于编号为7的结点,他的双亲结编号点为___3___左孩子编号为____14__、右孩子编号为___15___。
(完整版)高考算法程序框图真题练习及答案详解

(完整版)高考算法程序框图真题练习及答案详解1. 该算法程序框图的功能是什么?A. 求a,b,c三数的最大数B. 求a,b,c三数的最小数C. 将a,b,c按从小到大排列2. 该算法程序框图的功能是什么?A. 求输出a,b,c三数的最大数B. 求输出a,b,c三数的最小数C. 将a,b,c按从小到大排列3. 该算法程序框图的功能是什么?A. 找出a、b、c三个数中最大的数B. 找出a、b、c三个数中最小的数C. 找出a、b、c三个数中第二大的数4. 程序框图表示的算法的运行结果是什么?A. 5B. 6C. 75. 程序框图中所表示的算法是什么?A. 求x的绝对值B. 求x的相反数C. 求x的平方根6. 运行图中所示程序框图所表达的算法,输出的结果是什么?A. 3B. 7C. 157. 程序框图(算法流程图)的输出结果是什么?A. 6B. 5C. 48. 运行相应的程序,输出的结果为什么?A. 676B. 26C. 59. 运行相应的程序,输出的结果是什么?A. 1B. 2C. 310. 运行相应的程序,输出的S的值等于什么?A. 18B. 2C. 2111. 当m=7,n=3时,执行如图所示的程序框图,输出的S的值为什么?A. 7B. 42C. 21012. 执行如图所示的程序框图,若输入n=10,则输出的S=什么?A.B.C.13. 运行相应的程序,当输入x的值为-25时,输出x的值为什么?A. -1B. 1C. 314. 运行相应的程序,输出s值等于什么?A. -3B. -10C.15. 执行如图所示的程序框图,若输入n的值为6,则输出s的值为什么?A. 105B.C. 1516. 执行如图所示的程序框图,则输出的S的值是什么?A.B. 16C.D. 1A.9B.10C.11D.12考点:循环结构.专题:程序框图.分析:根据程序框图,计算每次循环后变量a的值,直到不满足循环条件,输出结果.解答:解:根据程序框图,计算每次循环后变量a的值,直到不满足循环条件,输出结果.第一次循环:a=3+2=5第二次循环:a=5+3=8第三次循环:a=8+4=12第四次循环:a=12+5=17第五次循环:a=17+6=23第六次循环:a=23+7=30第七次循环:a=30+8=38第八次循环:a=38+9=47第九次循环:a=47+10=57此时不满足循环条件,输出a的值,为57-9=48,故选A.点评:本题考查了应用程序框图进行简单的计算问题,是基础题.并在满足条件时跳出循环,输出S的值.当k=3时,不满足条件k≥n,跳出循环,输出S=7×6×5×4=840.故选D.点评:本题考查了直到型循环结构的程序框图,根据框图的流程判断算法的功能是解题的关键.同时,需要注意条件的判断和循环变量的变化过程.解:$k=1$,满足判断框,第1次循环,$s=1$,$k=2$;第2次判断后循环,$s=0$,$k=3$;第3次判断并循环$s=-3$,$k=4$,第3次判断退出循环,输出$s=-3$。
数据结构(查找)习题与答案

一、单选题1、对于查找表(13,27,38,49,50 ,65,76,97)采用顺序查找,在等概率情况下查找成功的平均查找长度是()。
A.4.5B.9C.4D.8正确答案:A2、在关键字序列(10,20,30,40,50)中采用折半查找20,依次与()关键字进行了比较。
A.30,10,20B.20C.30,20D.40,20正确答案:A3、在关键字序列(8,12,20,25,33)中,采用二分查找25,关键字之间比较需要()次。
A.2B.1C.3D.4正确答案:A4、对于长度为11的有序表,按折半查找,在等概率情况下查找成功时,其平均查找长度是()。
A.3B.4C.1D.2正确答案:A5、对于长度为11的有序表,按折半查找,在查找失败时,待查找值域表中关键字比较的次数是()。
A.3次或4次B.2次或3次C.4次或5次D.1次或2次正确答案:A6、对于长度为n的有序表,按折半查找,在等概率情况下查找成功平均时间复杂度是()。
A.O(㏒n)B.O(n)C.O(1)D.O(n㏒n)正确答案:A7、索引顺序查找也叫分块查找,其查找过程分为是()个步骤。
A.1B.3C.4D.2正确答案:D8、对于长度为n的关键字序列创建一颗二叉排序树,该树可能的最大高度是()。
A.n+1B.n-1C.㏒nD.n正确答案:D9、对于关键字序列(30,25,40,35,45),按序列次序创建一颗二叉排序树,在等概率情况下查找成功时,其平均查找长度是()。
A.8/3B.11/5C.8D.11正确答案:B10、影响散列查找时间效率的主要因素()。
A.仅与散列表中实际元素个数相关B.仅与散列表长相关C.与散列表长和散列表中实际元素个数均相关D.与散列表长和散列表中实际元素个数均不相关正确答案:C11、一组关键字序列为(27,17,9,19,16,43,53,8,63),用哈希函数H(key)=key MOD 8和链地址法处理冲突,查找关键字43,与散列表中关键字进行了()次比较。
第8章 排序习题解析

排序习题解析11. 填空题⑴排序的主要目的是为了以后对已排序的数据元素进行()。
【解答】查找【分析】对已排序的记录序列进行查找通常能提高查找效率。
⑵对n个元素进行起泡排序,在()情况下比较的次数最少,其比较次数为()。
在()情况下比较次数最多,其比较次数为()。
【解答】正序,n-1,反序,n(n-1)/2⑶对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行直接插入排序,当把第7个记录60插入到有序表时,为寻找插入位置需比较()次。
【解答】3【分析】当把第7个记录60插入到有序表时,该有序表中有2个记录大于60。
⑷对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行快速排序,在递归调用中使用的栈所能达到的最大深度为()。
【解答】3⑸对n个待排序记录序列进行快速排序,所需要的最好时间是(),最坏时间是()。
【解答】O(nlog2n),O(n2)⑹利用简单选择排序对n个记录进行排序,最坏情况下,记录交换的次数为()。
【解答】n-1【分析】60是该键值序列对应的完全二叉树中最后一个分支结点。
2. 选择题⑴下述排序方法中,比较次数与待排序记录的初始状态无关的是()。
A插入排序和快速排序B归并排序和快速排序C选择排序和归并排序D插入排序和归并排序【解答】C【分析】选择排序在最好、最坏、平均情况下的时间性能均为O(n2),归并排序在最好、最坏、平均情况下的时间性能均为O(nlog2n)。
⑵下列序列中,()是执行第一趟快速排序的结果。
A [da,ax,eb,de,bb] ff [ha,gc]B [cd,eb,ax,da] ff [ha,gc,bb]C [gc,ax,eb,cd,bb] ff [da,ha]D [ax,bb,cd,da] ff [eb,gc,ha]【解答】A【分析】此题需要按字典序比较,前半区间中的所有元素都应小于ff,后半区间中的所有元素都应大于ff。
数据结构查找与排序练习题答案——查找排序练习题答案

数据结构查找与排序练习题答案一、选择题1.对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( ) A.(N+1)/2 B. N/2 C. N D. [(1+N)*N ]/22.适用于折半查找的表的存储方式及元素排列要求为( )A.链接方式存储,元素无序 B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序3.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( )A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减4.有一个长度为12的有序表,按二分查找法对该表进行查找,在表内各元素等概率情况下查找成功所需的平均比较次数为()。
A.35/12 B.37/12 C.39/12 D.43/125.折半查找的时间复杂性为()A. O(n2)B. O(n)C. O(nlogn)D. O(logn)6.对有18个元素的有序表作折半查找,则查找A[3]的比较序列的下标为()A.1,2,3B.9,5,2,3C.9,5,3D.9,4,2,37.设有序表的关键字序列为{1,4,6,10,18,35,42,53,67,71,78,84,92,99},当用二分查找法查找健值为84的结点时,经()次比较后查找成功。
A.2B. 3C. 4D.128.用n个键值构造一棵二叉排序树,最低高度为()A.n/2B.、nC.lognD.logn+19.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( ) A.(100,80, 90, 60, 120,110,130)B.(100,120,110,130,80, 60, 90)C.(100,60, 80, 90, 120,110,130)D.(100,80, 60, 90, 120,130,110)10.设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=key% 13,散列地址为1的链中有()个记录。
数据结构 图 查找练习题

9.7 已知一个有序表的表长为8N,并且表中没有 关键字相同的记录。假设按如下所述方法插入一 个关键字等于给定值K的记录:先在第 8,16,24,…,8K,…,8N个记录中进行顺序查找,或 者查找成功,或者由此确定出一个继续进行折半 查找的范围。画出描述上述查找过程的判定树, 并求等概率查找时查找成功的平均查找长度。
9
2
6
1
9.19 选取哈希函数H(k)=(3k) MOD 11。用开放 定址法处理冲突,di=i((7k) MOD 10+1) (i=1,2,3,…)。试在0~10的散列地址空间中对 关键字序列(22,41,53,46,30,13,01,67)构造哈希 表,并求等概率情况下查找成功时的平均查找 长度。
第7章 习题
7.1 已知如图所示的有向图,请给出该图的
(1)每个顶点的入/出度
(2)邻接矩阵 (3)邻接表 (4)强连通分量
1
7.7 请对下图中的无向带权图
(1)写出它的邻接矩阵,并按普里姆算法求其最小生 成树
(2)写出它的邻接表,并按克鲁斯卡尔算法求其最小 生成树
9 e3
4 b 57 6 f
a 5 5d
3c
4
52 g
5 h6
2
7.11 试利用Dijkstra算法求图中从顶点a到其他 各顶点间的最短路径,写出执行算法过程中各 步的状态。
b
4
15
68 e 9
a 2c
g
4
12
5 f 10
d
3
3
第9章 习题
9.2 试分别画出在线性表(a,b,c,d,e,f,g)中进行折 半查找,以关键字等于e,f和g的过程。 9.3 画出对长度为10的有序表进行折半查找的 判定树,并求其等概率时查找成功的平均查找 长度。
编程基础之顺序查找题之欧阳道创编

01:查找特定的值••查看•提交•统计•提问总时间限制:1000ms内存限制:65536kB描述在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。
输入第一行包含一个正整数n,表示序列中元素个数。
1 <= n <= 10000。
第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。
元素的绝对值不超过10000。
第三行包含一个整数x,为需要查找的特定值。
x的绝对值不超过10000。
输出若序列中存在x,输出x第一次出现的下标;否则输出-1。
样例输入样例输出02:输出最高分数的学生姓名•查看描述输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。
输入第一行输入一个正整数N(N <= 100),表示学生人数。
接着输入N行,每行格式如下:分数姓名分数是一个非负整数,且小于等于100;姓名为一个连续的字符串,中间没有空格,长度不超过20。
数据保证最高分只有一位同学。
输出获得最高分数同学的姓名。
样例输入样例输出来源习题(13-1)03:不高兴的津津•查看描述津津上初中了。
妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。
另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。
但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。
假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。
请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。
输入包括七行数据,分别表示周一到周日的日程安排。
每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。
输出包括一行,这一行只包含一个数字。
如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.画出该图的邻接矩阵和邻接表。
根据邻接表从A 开始求DFS 和BFS 序列。
(12分)【答案】011000 101000 100001 010010 000101 001010DFS 序列BFS 序列:ABCDFE2. 已知序列{70,73,69,23,93,18,11,68}请给出直接插入排序作升序排序每一趟的结果和快速排序作升序排序时一趟的结果。
(10分)【答案】直接插入排序70,73,69,23,93,18,11,68 [70,73],69,23,93,18,11,68 [70,69,73], 23,93,18,11,68 [23,70,69,73], 93,18,11,68 [23,70,69,73, 93],18,11,68 [18,23,70,69,73, 93], 11,68 [11,18,23,70,69,73, 93], 68 [11,18,23,68,70,69,73, 93] 快速排序:[68,11,69,23,18] ,70,[93,73]3.设有一组关键字关键码集为 {47,7,29,11,16,92,22,8,3},哈希表表长为11, Hash(key)=key mod 11,用线性探测法处理冲突,构造哈希表,并求它成功查找的ASL 。
(8分) 【答案】ASL=5/34.定义有序表抽象数据类型,并据此类型设计折半查找算法。
typedef struct { int key;float info; }JD;int binsrch(JD r[],int n,int k) { int low,high,mid,found; low=1; high=n; found=0;while((low<=high)&&(found==0)) { mid=(low+high)/2;if(k>r[mid].key) low=mid+1; else if(k==r[mid].key) found=1; else high=mid-1; }if(found==1) return(mid); else return(0); }5. 用prim 算法求下图的最小生成树,写出最小生成树的生成过程。
(5分)6.设关键字的输入序列为{4,5,7,2,1,3,6}(1)(8分)从空树开始构造平衡二叉树,画出每加入一个新结点时二叉树的形态,若发生不平衡,指明需做的平衡旋转类型及平衡旋转的结果。
(2)(4分)上面的数据作为待排序的数据,写出用快速排序进行一趟划分后的数据序列答案(1)(2)一趟划分后的数据序列 3 1 2 4 7 5 67.画出无向图G的邻接表存储结构,根据邻接表存储结构写出深度优先和广度优先遍历序列。
(7分)【答案】DFS遍历序列v1 v2 v4 v8 v5 v3 v6 v7(或1 2 4 8 5 3 6 7)BFS遍历序列v1 v2 v3 v4 v5 v6 v7 v8(或1 2 3 4 5 6 7 8)8.请在标号处填写合适的语句。
完成下列程序。
(每空1分,共5分)int Binary_Search(S_TBL tbl,KEY kx){ /* 在表tbl中查找关键码为kx的数据元素,若找到返回该元素在表中的位置,否则,返回0 */ int mid,flag=0;low=1;high=length;while( ⑴&!flag ){ /* 非空,进行比较测试*/mid= ⑵;if(kx<tbl.elem[mid].key) ⑶;else if(kx>tbl.elem[mid].key) ⑷;else { flag= ⑸;break;}}return flag;}答案:(1)low<=high(2) (low+high)/2(3) high=mid-1(4) low=mid+1(5) 19.下面是一个采用直接选择排序方法进行升序排序的函数,请在标号处填写合适的语句。
(每空1分,共5分)程序:Void seletesort(int A[n],int n){int i,j,t,minval,minidx;for(i=1;i<=n-1;i++){minval=A[i+1];(1)for(j=i+2;j<=n;j++)if( (2) ) { (3) ; minidx=j;}if( (4) ) {t=A[i+1];(5)A[minidx]=t;}}}【答案】(1)minidx=i+1(2) minval>A[j](3) minval=A[j](4) i!=j(5) A[i+1]=A[minidx]10. 试写出求有向无环图的关键路径算法的设计思路(10分)【答案】输入顶点和弧信息,建立其邻接表计算每个顶点的入度对其进行拓扑排序排序过程中求顶点的Ve[i]将得到的拓扑序列进栈按逆拓扑序列求顶点的Vl[i]计算每条弧的e[i]和l[i],找出e[i]=l[i]的关键活动11、如下所示的连通图,请画出(1) 以顶点①为根的深度优先生成树;(5分)(2) 如果有关节点,请找出所有的关节点。
(5分)【答案】(1) 该连通图从①出发做深度优先搜索,得到的深度优先生成树为:结果不唯一(2) 关节点为①、②、③、⑦、⑧12、设有13个初始归并段,其长度分别为28,16,37,42,5,9,13,14,20,17,30,12,18。
试画出4路归并时的最佳归并树,并计算它的带权路径长度WPL。
【解答】因为(13 - 1) % (4 - 1) = 12 % 3 = 0,所以不需要添加空段。
最佳归并树为WPL = ( 5 + 9 + 13 + 12 + 16 + 14 + 17 + 18 + 28 + 37 + 20 + 30 ) * 2 + 42 = 48013、设散列表为HT[0..12],即表的大小为m= 13。
采用双散列法解决冲突。
散列函数和再散列函数分别为:H0( key ) = key % 13; 注:%是求余数运算(= mod )H i = ( H i-1 + REV ( key + 1) % 11 + 1) %13; i = 1, 2, 3, , m-1其中,函数REV(x)表示颠倒10进制数x的各位,如REV(37) = 73,REV(7) = 7等。
若插入的关键码序列为{ 2, 8, 31, 20, 19, 18, 53, 27 }。
试画出插入这8个关键码后的散列表。
【解答】散列表HT[0..12],散列函数与再散列函数为H0( key ) = key mod 13;H i= ( H i-1 + REV ( key + 1 ) mod 11 + 1 ) mod 13;插入关键码序列为{ 2, 8, 31, 20, 19, 18, 53, 27 }H0( 2 ) = 2, 比较次数为1 H0( 8 ) = 8, 比较次数为1H0( 31 ) = 5, 比较次数为1 H0( 20 ) = 7, 比较次数为1H0( 19 ) = 6, 比较次数为1H0( 18 ) = 5, 冲突,H1 = 9,比较次数为2H0( 53 ) = 1,比较次数为1H0( 27 ) = 1,冲突,H1 = 7,冲突,H2 = 0,比较次数为3插入8个关键码后的散列表14.有一种简单的排序算法,叫做计数排序(count Sorting)。
这种排序算法对一个待排序的表(用数组表示)进行排序,并将排序结果存放到另一个新的表中。
必须注意的是,表中所有待排序的关键码互不相同。
计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键码比该记录的关键码小。
假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序表中的合适的存放位置即为c。
(1) 给出适用于计数排序的数据表定义;(4分)(2) 使用C++ 语言编写实现计数排序的算法;(10分)(3) 对于有n个记录的表,关键码比较次数是多少?(4分)(1) 数据表定义【解答】const int DefaultSize = 100;template <class Type> class datalist //数据表的前视声明template <class Type> class Element{//数据表元素类的定义private:Type key;//关键码field otherdata;//其它数据成员public:Type getKey ( ) { return key; }//取当前结点的关键码void setKey ( const Type x ) {key = x; }//将当前结点的关键码修改为x }template <class Type> class datalist {//用顺序表来存储待排序的元素,这些元素的类型是Typepublic:datalist ( int MaxSz = DefaultSize ) : MaxSize ( Maxsz ), CurrentSize (0){Vector = new Element <Type> [MaxSz]; }private:Element <Type> * Vector;//存储待排序元素的向量int MaxSize, CurrentSize;//最大元素个数与当前元素个数}(2) 计数排序的算法【解答1】template <class Type>void countsort ( datalist<Type> & initList, datalist<Type> & resultList ) {int i, j, c; Type refer;for ( i = 0;i < initList.CurrentSize;i++ ) {c = 0;refer := initList.Vector[i].getKey ( );for (j = 0;j < initList.CurrentSize;j++ )if (initList.Vector[j].getKey ( ) < refer ) c++;resultList.Vector[c] = initList.Vector[i]}resultList.CurrentSize = initList.CurrentSize;}【解答2】template <class Type>void countsort ( datalist<Type> & initList, datalist<Type> & resultList ) {int *c = new int[initList.CurrentSize];for ( int i = 0;i < initList.CurrentSize;i++ ) c[i] = 0;for ( i = 0;i < initList.CurrentSize-1;i++ )for ( int j = i+1;j < initList.CurrentSize;j++ )if (initList.Vector[j].getKey ( ) < initList.Vector[i].getKey ( ) ) c[i]++;else c[j]++;for ( i = 0;i < initList.CurrentSize;i++ )resultList.Vector[ c[i] ] = initList.Vector[i];resultList.CurrentSize = initList.CurrentSize;}(3)对于n个记录的表,【解答1】关键码比较次数为n2,【解答2】关键码比较次数为n(n-1)/2。