1.设 n 是描述问题规模的非负整数,下列程序片段的时间复杂度是______。
x=2;
while(x
A.O() B.O(n) C.O() D.O(n^2)
解答:A
假设执行 y次,则 (2^y)*x=n/2,y=,所以时间复杂度为 A
2.元素 a,b,c,d,e 依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以元素 d 开头的序列个数为______。
A.3 B.4 C.5 D.6
解答:B
出栈序列以 d 开头 ,则 a,b,c,d 依次近战,d 出栈,此时有以下几种情况。
(1)e进栈,依次出栈。
(2)c出栈,e进栈,依次出栈
(3)b、c出栈,e进栈,依次出栈
(4)a、b、c出栈、e进栈,依次出栈
3.已知循环队列存储在一维数组 A[0...n-1] 中,且队列非空时 front 和 near 分别指向队头和队尾元素。若初始时队列为空,且要求第一个进入队列的元素存储在 A[0] 处,则初始时 front 和 near 的值分别是______。
A.0,0 B.0,n-1 C.n-1,0 D.n-1,n-1
解答:B
入队时,元素放置位置为 (near+1)%n,故 near 指向 A[n-1]。front 指向队头,初始时,队头仍为 A[0],因此指向 0。
4.若一颗完全二叉树有 768 个节点,则该二叉树中叶节点的个数为____。
A.257 B.258 C.384 D.385
解答:C
满二叉树第 0 层到第 n-1 层每层节点个数依次为 1,2,4.......2^(n-1),所以前 n-1 层共有 1+2+4+...+2^n=2^n-1 个节点。
完全二叉树有 768 个节点,假设有 n-1 层,则删去第 n-1 层后一共有 511 个节点,因此第 n-1 层有 768-511= 257 个叶子节点;第 n-2 层有 2^8=256 个节点,其中有 257/2+1=129个节点有子节点,因此叶子节点个数为 256-129= 127 。所以叶子节点个数为 257+127= 384。
5.若一颗二叉树的前序遍历序列和后序遍历序列分别是 1,2,3,4 和 4,3,2,1。则该二叉树的中序遍历序列不会是_______。
A.1,2,3,4 B.2,3,4,1 C.3,2,4,1 D.4,3,2,1
解答:C
A,B,D 可以得到二叉树,如下图所示。
6.已知一颗有 2011 个节点的树,其叶节点个数为 116,该数对应二叉树中无右孩子的节点个数是__________。
A.115 B.116 C.1895 D.1896
解答:D
设该树为除最后一层外,每层只有一个节点。此时共有 2011-116=1895 个节点所在层只有一个节点,转为二叉树后,前 1895 层 1895 个节点无右孩子,第 1896 层最右边节点无右孩子。因此共有 1896 个节点无右孩子。
7.对于下列关键字序列,不可能构成某二叉排序树一条查找路径的是______。
A.95,22,91,24,94,71 B.92,20,91,34,88,35
C.21,89,77,29,36,38 D.12,25,71,68,33,34
解答:A
构成二叉排序树的查找路径 指的是按序列每层一个关键字组成的二叉树。
A 项中,第二个节点为22 <95,因此后续所有节点都应小于 95;第三个节点为91>22,因此后续节点的取值区间为 [22,95];第四个节点24<91,因此后续节点的取值区间为 [22,91],存在节点 94 不在该区间内,因此不能构成查找路径。
8.下列关于图的叙述中,正确的是________。
Ⅰ 回路是简单路径 Ⅱ存储稀疏图,用邻接矩阵比邻接表更省空间
Ⅲ若有向图中存在拓扑序列,则该图不存在回路
A.Ⅱ B. ⅠⅡ C.Ⅲ D.ⅠⅢ
解答:C
简单:一条路径中,如果同一条边不出现两次,则此路径是简单路径
回路:如果一条路径的始点与终点相同,则此路径称为回路。
简单回路:没有相同边的回路。
据此可以判断,有的回路是简单路径,有的不是,故Ⅰ错误。
邻接矩阵会保存所有节点之间的位置关系,而邻接表只会保存相连的节点,因此稀疏图使用邻接表更省空间。Ⅱ错误
拓扑序列:将顶点活动网中的活动按发生的先后次序进行的排列。因此 Ⅲ 正确。
9.为提高散列(Hash)表的查找效率,可以采取的正确措施是______。
Ⅰ增大装填(载)因子 Ⅱ射击冲突(碰撞)少的散列函数
Ⅲ处理冲突(碰撞)时避免产生聚集(堆积)现象
A.Ⅰ B.Ⅱ C.ⅠⅡ D.ⅡⅢ
解答:D
装填因子越大,产生冲突的概率越大,查找效率变低的概率越大。Ⅰ 错误
冲突减少,查找效率提高。Ⅱ 正确
聚集现象少,查找效率提高。Ⅲ正确
10.为实现快速排序算法,待排序序列宜采用的存储方式是______。
A.顺序存储 B.散列存储 C.链式存储 D.索引存储
解答:A
快速排序:选定一个元素,将大于该元素的排在其左边,小于该元素的排在右边。再对其左边和右边的元素序列重复此操作直至所有元素有序。
散列存储即 hash 存储。
索引存储:分别存放数据元素和数据元素之间关系的存储方式,类似于二叉排序树。
绝大多数内部排序都只适用于顺序存储。再快速排序过程中,既要从前往后遍历,又要从后往前遍历,因此适用于顺序存储。
11.已知序列 25,13,10,12,9 是大根堆,在序列尾部插入新元素 18,再将其调整为大根堆,则调整过程中元素之间进行的比较次数是_____。
A.1 B.2 C.4 D.5
解答:B
原大根堆:
插入 18 后,位于 10 的左节点。调整大根堆时,先与 10 比较一次,大于10,交换二者位置;再与 25 比较一次,小于 25,不进行变动。因此一共进行了两次比较。
12.下列选项中,描述浮点数操作速度指标的是______。
A.MIPS B.CPI C.IPC D.MFLOPS
解答:D
MIPS:每秒执行多少百万条指令。
CPI:执行一条指令所消耗的时间。
IPC:CPU 每个时钟周期内执行的指令条数。
MFLOPS:每秒执行多少百万次浮点操作。
13.float 型数据通常用 IEEE 754 单精度浮点数格式表示。若编译器将 float 型变量 x 分配到一个 32 位的浮点寄存器 FR1 中,且 x=-8.25,则 FR1 的内容是_____。
A.C104 0000H B.C242 0000H C.C184 0000H D.C1C2 0000H
解答:A
单精度 IEEE 754 表示浮点数时使用 32 位二进制。32 位二进制由三个部分组成:1 位的符号位,8 位阶码和 23 位尾数。
(1)将十进制 -8.25 转化而二进制 -1000.01B
(2)使用科学计数法表示该二进制 -1.00001B*2^(11B)
(3)该数是负数,因此符号位为 1
阶码的真值为 11B 即 0000 0011B,但是阶码存储使用的是移码(偏置值为 0111 1111B),即在原来基础上加上 01111 1111B,所以阶码的值为1000 0010B。
尾数是取 1.00001B小数部分,因此尾数为 000 0100 0000 0000 0000 0000B
(4) 将符号位,阶码和尾数组合得到 1100 0001 0000 0100 0000 0000 0000 0000B 即C104 0000H。
14.下列各类存储器中,不采用随机存储方式的是_____。
A.EPROM B.CDROM C.DRAM D.SRAM
解答:B
EPROM:光可擦除可编程存储器,具有非易失性,采用随机存储方式。
CDROM:即光盘,采用串行存取方式(将 n 位二进制数一次性写入或读取的方式)。
DRAM:动态随机存取存储器。
SRAM:静态随机存取存储器。
15.某计算机存储器按字节编址,主存地址空间大小为 64MB,现用 4MB*8 位的 RAM 芯片组成 32 MB 的主存储器,则存储器地址寄存器 MAR 的位数至少是_____。
A.22 位 B.23 位 C.25 位 D.26 位
解答:D
主存地址空间大小为 64MB=2^6*2^10*2^10B=2^26B。因此存储器地址空间寄存器 MAR 的位数至少是 26 位(主要考虑主存理论最大情况,现有主存储器小于该容量,但以后可能会扩展。)
16.偏移寻址通过将某个寄存器内容与一个形式地址相加而形成有效地址。下列寻址方式中,不属于偏移寻址方式的是_______。
A.间接寻址 B.基址寻址 C.相对寻址 D.变址寻址
解答:A
间接寻址:实际地址=所给地址存放内容指向位置的内容。
基址寻址:实际地址=基地址(基址寄存器内容)+偏移量(形式地址、程序中指明)
相对寻址:实际地址=基地址(PC 程序计数器内容)+偏移量(形式地址、程序中指明)
变址寻址:实际地址=基地址(变址寄存器内容)+偏移量(形式地址、程序中指明)
显然,选 A。
17.某机器由一个标志寄存器,其中由进位/借位标志 CF、零标志 ZF、符号标志 SF、和溢出标志 OF,条件转移指令 bgt(无符号整数比较大于时转移)的转移条件是_____。
A.CF+OF=1 B. !SF + ZF=1 C. !(CF+ZF)=1 D. !(CF+SF)=1
解答:C
假设是 a>b 时转移,则 a-b 的计算结果为正整数,此时 CF 和 SF 为 0,选 C。因为是无符号整数,所以 符号标志 SF 一定为 0 。OF 是判断带符号数溢出的。
18.下列给出的指令系统特点中,有利于实现指令流水线的是____。
Ⅰ指令格式规整且长度一致 Ⅱ数据和指令按边界对齐存放
Ⅲ只有 Load/Store 指令才能对操作数进行存储访问
A.Ⅰ Ⅱ B.ⅡⅢ C.ⅠⅢ D.ⅠⅡⅢ
解答:D
Ⅰ可以简化指令译码的复杂度。 Ⅱ能保证在一个存取周期内能得到需要的数据和指令,不用延迟等待。Ⅲ可以简化流水线的复杂度。因此都有利于指令流水线的实现。
19.假定不采用 Cache 和指令预取技术,且机器处于 “开中断” 状态。在下列有关指令执行的叙述中,错误的是_______。
A.每个指令周期中 CPU 都至少要访问内存一次。
B.每个指令周期一定大于等于一个CPU时钟周期
C.空操作指令的指令周期中任何寄存器内容都不会被改变
D.当前程序在每条指令执行结束时都可能被外部中断打断
解答:C
A 项中每个指令周期都需要取指,因此至少要访问内存一次。
B项中时钟周期是CPU 的最小时间单位 ,因此每个指令周期一定大于等于一个 CPU 时钟周期。
C 项中 PC 会自动加一。
D 项中机器处于开中断状态,会被外部中断打断。
20.在系统总线的数据线上,不可能传输的是_____。
A.指令 B.操作数 C.握手(应答)信号 D.中断类型号
解答:C
AB显然可以。
C 项握手(应答)信号属于通信联络控制信号,在通信总线上传输。
D 项中断类型号指的是中断向量的地址。CPU 响应中断请求后,首先通过总线将中断类型码放入寄存器暂存,然后保护现场,之后再通过数据总线读取中断类型码,查找中断向量表以找到相应的中断处理程序入口。
21.某计算机有 5 级中断 L4~L0,中断屏蔽字 M4M3M2M1M0,Mi=1(0<=i<=4) 表示对 Li 级中断进行屏蔽。若中断响应优先级从高到低的顺序是 L4->L0->L2->L1->L3,则 L1 的中断处理程序中设置的中断屏蔽字是______。
A.11110 B.01101 C.00011 D.01010
解答:D
L1 的中断屏蔽字要屏蔽 L3、L1,不能屏蔽 L4,L0,L2,因此为 01010。关于中断的优先级是否屏蔽同一优先级,百度百科中中断嵌套的描述是更高一级的中断“加塞”。
22.某计算机处理器主频 50MHz,采用定时查询方式控制设备 A 的 I/O,查询程序运行一次所用的时钟周期数至少是 500。在设备 A 工作期间,为保证数据不丢失,每秒需要对其查询至少 200 次,则 CPU 用于设备 A 的 I/O 的时间占整个 CPU 时间的百分比至少是_____。
A.0.02% B.0.05% C.0.20% D.0.50%
解答:C
查询一次所用的时钟周期数至少是 500,每秒至少查询 200 次,因此每秒钟至少有 200*500=10^5 个时钟周期用于查询。计算主频为 50MHz,即每秒 50M 个时钟周期。所以,所占百分比至少为 10^5/(50*10^6)=1/500=2*10^(-3)=0.2% ,选 C。
23. 下列选项中,满足短任务优先且不会发生饥饿现象的是_______。
A.先来先服务 B.高响应比优先 C.时间片轮转 D.非抢占式短任务优先
解答:C
高响应比优先:响应比=作业周转时间/作业处理时间=(作业等待时间+作业处理时间)/作业处理时间=1+作业等待时间/作业处理时间。是一种介于先来先和短作业优先的算法,既照顾了短作业,又使长作业的等待时间不会太长。
24.下列选项中,在用户态执行的是_______。
A.命令解释程序 B.缺页处理程序 C.进程调度程序 D.时钟中断处理程序
解答:A
命令解释程序属于命令接口,面向用户,可以在用户态执行。
缺页和时钟中断都是中断,在内核态执行。
进程调度室操作系统内核进程,在内核态执行。
25.在支持多线程的系统中,进程 P 创建的若干线程不能共享的是______。
A.进程 P 的代码段 B.进程 P 打开的文件
C.进程 P 的全局变量 D.进程 P 中某线程的栈指针
解答:D
属于进程的资源可以共享,属于线程的资源独享。
26.用户发出磁盘 I/O 请求后,系统的正确处理流程是_______。
A.用户程序->系统调用处理程序->中断处理程序->设备驱动程序
B.用户程序->系统调用处理程序->设备驱动程序->中断处理程序
C.用户程序>设备驱动程序->系统调用处理程序->中断处理程序
D.用户程序>设备驱动程序->中断处理程序->系统调用处理程序
解答:B
输入/输出软件一般从上到下分为四个层次:用户层、系统调用处理程序、设备驱动程序及其中断处理程序。
27.某时刻进程资源的使用情况见下表。
进程 | 已分配资源 | 尚需分配 | 可用资源 | ||||||
R1 | R2 | R3 | R1 |
R2 | R3 | R1 | R2 | R3 | |
P1 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | 2 | 1 |
P2 | 1 | 2 | 0 | 1 | 3 | 2 | |||
P3 | 0 | 1 | 1 | 1 | 3 | 1 | |||
P4 | 0 | 0 | 1 | 2 | 0 | 0 |
此时的安全序列为_______。
A.P1,P2,P3,P4 B.P1,P3,P2,P4 C.P1,P4,P3,P2 D.不存在
解答:D
P1 顺利完成,此时可用资源R1=2,R2=2,R3=1。只能满足 P4 的要求,P4 完成后,可用资源 R1=2,R2=2,R3=2。此时无法满足 P2 和 P3 的要求。因此不存在安全序列。
28.在缺页处理过程中,操作系统执行的操作可能是______。
Ⅰ修改页表 Ⅱ磁盘I/O Ⅲ分配页框
A.ⅠⅡ B.Ⅱ C.Ⅲ D.ⅠⅡⅢ
解答:D
缺页时,会根据算法将外存上保存的页面调入内存,该过程中可能会替换一个内存中的页,因此ⅠⅡⅢ 都可能成立。
29.当系统发生抖动(thrashing)时,可以采取的有效措施是_______。
Ⅰ撤销部分进程 Ⅱ增加磁盘交换区的容量 Ⅲ提供用户进程的优先级
A.Ⅰ B.Ⅱ C.Ⅲ D.ⅠⅡⅢ
解答:A
系统抖动:在请求分页存储管理中,从主存刚换出某一页面后,根据请求又马上换入该面,这种反复换入换出的现象,称之为系统颠簸,又叫系统抖动。
30.在虚拟内存管理中,地址变换机构将逻辑地址转化为物理地址,形成该逻辑地址的阶段是______。
A.编辑 B.编译 C.链接 D.装载
解答:C
编辑阶段:编写程序。
编译阶段:将高级语言代码转化为对应目标文件。会进行词法分析、语法分析、语义分析并在优化后产生相应的汇编代码文件。
链接:将多个文件加工后合并为一个文件。
装载:将可执行文件全部或部分加载到内存中。
31.某文件占 10 个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析,假设一个缓冲区与一个磁盘块大小相等,把一个磁盘块读入缓冲区的时间为 100 μs,将缓冲区内的数据传送到用户区的时间是 50 μs,CPU 对一整块数据进行分析的时间为 50 μs。在单缓冲区和双缓冲区结构下,读入并分析完成该文件的时间分别是_____。
A.1500μs,1000μs B.1550μs,1100μs C.1550μs,1550μs D.2000μs,2000μs
解答:B
单缓冲区:第一个文件读入缓冲区耗时 100 μs,送到用户区耗时 50 μs,CPU 分析耗时 50 μs,因此第一个文件耗时 200 μs。但是对于后面的 9 个文件,可以在 CPU 分析开始第一个文件时,就开始将其读入缓冲区,因此后 9 个文件,每个耗时 150 μs。因此总耗时为 150*9+200=1550 μs。
双缓冲区:第一个文件读入缓冲区耗时 100 μs,送到用户区耗时 50 μs,CPU 分析耗时 50 μs,因此第一个文件耗时 200 μs。但是对于后面的 9 个文件,在前面一个文件读入缓冲区后,立马就可以读入,每个耗时 100 μs。因此总耗时为 100*9+200=1100 μs。
32.有两个并发执行的进程 P1 和 P2,现要共享初值为 1 的变量 x。P1 对 x 加一,P2 对 x 减一。加一操作和减一操作的指令序列如下所示。
//加一操作
load R1,x //取 x 到寄存器 R1
inc R1
store x,R1 //将 R1 的内容存到 x
//减一操作
load R2,x //取 x 到寄存器 R2
dec R2
store x,R2 //将 R2 的内容存到 x
两个操作完成后,x 的值____。
A.可能为 -1 或 3 B.只能为 1 C.可能为 0,1 或 2 D.可能为 -1,0,1,2
解答:C
有以下三种情况:
(1)加一和减一顺序执行,结果为 1。
(2)加一取 x=1 和减一取 x=1,最终加一结果 2 覆盖减一结果 0。
(3)加一取 x=1 和减一取 x=1,最终减一结果 0 覆盖加一结果 2。
33.TCP/IP 参考模型中网络层提供的是_______。
A.无连接不可靠的数据报服务 B.无连接可靠的数据报服务
C.有连接不可靠的数据报服务 D.有连接可靠的数据报服务
解答:A
TCP/IP 参考模型从下到上依次是:
链路层:对电信号进行分组并形成具有特殊意思的数据帧,然后以广播的形式通过物理介质发送给接收方。(Mac 地址是由本层确立的)
网络层:定义网络地址、区分网段、子网内 Mac 寻址、对不同子网的数据包进行路由。(IP协议,ARP 协议,路由协议)
传输层:定义端口、标识应用程序身份、实现端口到端口的通信。(TCP 协议,UDP 协议)
应用层:定义数据格式并按照对应的格式解读数据。
34.某通信链路的数据传输速率为 2400bps,采用四相位调制,则该链路的波特率为_______。
A.600 波特 B.1200 波特 C.4800 波特 D.9600 波特
解答:A
波特率为每秒钟传输的码元数。
数据传输速率=波特率*单个调制状态对应的二进制位数
采用四相位调制,因此每个相位有 4 种振幅, 因此一个码元可以携带 = 2 bit 信息,因此波特率=数据传输速率/2=1200 波特。
码元:在数字通信中常常用时间间隔相同的符号来表示一个二进制数字,这样的事件间隔内的信号称为码元。(一个数字脉冲称为一个码元)
35.数据链路层采用选择重传协议(SR)传输数据,发送方发送了 0~3 号数据帧,现已收到 1 号帧的确认,而 0、2 号帧依次超时,则此时需要重传的帧数是_______。
A.1 B.2 C.3 D.4
解答:B
选择重传协议每个帧都有一个计时器,接受方的确认只对该帧进行确认。
36.下列选项中,对正确接收到的数据帧进行确认的 MAC 协议是______。
A.CSMA B.CDMA C.CSMA/CD D.CSMA/CA
解答:D
MAC 协议:多路访问控制协议。
CDMA 即码分多址。是指利用码序列相关性实现的多址通信。
CSMA/CD:带有冲突检测的载波侦听多路存取,是一种媒体访问控制方法
CSMA/CA:带有冲突避免的载波侦听多路存取。发送包是不能检测到信道上的冲突,只能尽量避免。通常 CSMA/CA 利用 ACK 信号来避免冲突的发生,客户端只有收到 ACK 信号后才确认发送的数据送达。
CSMA 一般指 CSMA/CD
37.某网络拓扑如下图所示,路由器 R1 只有到达子网 192.168.1.0/24 的路由。为使 R1 可以将 IP 分组正确地路由到图中所有的子网,则在 R1 中需要增加的一条路由(目的网络,子网掩码,下一跳)是_______。
A.192.168.2.0 255.255.255.128 192.168.1.1
B.192.168.2.0 255.255.255.0 192.168.1.1
C.192.168.2.0 255.255.255.128 192.168.1.2
D.192.168.2.0 255.255.255.0 192.168.1.2
解答:D
路由器 R1 有没有 子网 192.168.2.0/25 和子网 192.168.2.128/25 的路由,因只能增加一条路由,因此需要进行路由聚合。192.168.2.0/25 和 192.168.2.129/25 转为二进制后,前 24 位相同,因此聚合结果为 192.168.2.0/24,R2 与 R1 直接相连的是 192.168.1.2,因此选 D。
38.在子网 192.168.4.0/30 中能接收目的地址为 192.168.4.3 的IP分组的最大主机数为____。
A.0 B.1 C.2 D.3
解答:C
192.168.4.3 是广播地址,因此子网 192.168.4.0/30 不需要再次划分。
192.168.4.0/30 只有两位可用作主机号,且全 0 (网络本身)和全 1(广播地址) 不能使用,因此最大主机数为 2^2-2=2,选 C。
39.主机甲向主机乙发送了一个(SYN=1,seq=11220)的 TCP 段,期望与主机乙建立 TCP 连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的 TCP 段可能是______。
A.(SYN=0,ACK=0,seq=11221,ack=11221)
B(SYN=1,ACK=1,seq=11220,ack=11220)
C.(SYN=1,ACK=1,seq=11221,ack=11221)
D.(SYN=0,ACK=0,seq=11220,ack=11220)
解答:B
在确认段报文中,SYN 和 ACK 都必须是 1,ack 是在 对方发来的 seq 上加一,seq 由乙的 TCP 进程给出。
40.主机甲和主机乙之间已经建立一个 TCP 连接,主机甲向主机乙发送了 3 个连续的 TCP 段,分别包含 300B,400B 和 500B 的有效载荷,第三个段的序号为 900,若主机乙仅接收到第 1 段和第 3 段,则主机乙发送给主机甲的确认序号是_______。
A.300 B.500 C.1200 D.1500
解答:B
主机乙收到第 1 个段和第 3 个段,向主机乙发送对第 1 个段的确认。第三个段的序号为 900,则第二个段的起始序号为 900-400=500,选 B。
41.(8分)已知有 6 个顶点(顶点编号为 0~5)的有向带权图G,其邻接矩阵 A 为上三角矩阵,按行为主序(行优先)保存在如下的一维数组中。
4 | 6 | ∞ | ∞ | ∞ | 5 | ∞ | ∞ | ∞ | 4 | 3 | ∞ | ∞ | 3 | 3 |
要求:(1)写出图 G 的邻接矩阵 A。
(2)画出有向带权图 G
(3)求图 G 的关键路径,并计算该关键路径的长度。
知识点:关键路径:从源点到汇点的所有路径中,具有最大路径长度的路径。
解答:(1)图 G 的邻接矩阵 A 对应表如下:(横向依次为 0,1,2,3,4,5;纵向依次为0,1,2,3,4,5 )
∞ | 4 | 6 | ∞ | ∞ | ∞ |
∞ | ∞ | 5 | ∞ | ∞ | ∞ |
∞ | ∞ | ∞ | 4 | 3 | ∞ |
∞ | ∞ | ∞ | ∞ | ∞ | 3 |
∞ | ∞ | ∞ | ∞ | ∞ | 3 |
∞ | ∞ | ∞ | ∞ | ∞ | ∞ |
(2)有向带权图 G 如下所示:
(3)
顶点 | 最早发生时间e(i) | 最晚发生时间 l(i) | l(i)-e(i) |
0 | 0 | 0 | 0 |
1 | 4 | 4 | 0 |
2 | 9 | 9 | 3 |
3 | 13 | 13 | 0 |
4 | 12 | 13 | 1 |
5 | 16 | 16 | 0 |
所以关键路径为:01235,长度为16。
42.(15分)一个长度为 L(L>=1)的升序序列 S,处在第 L/2 个位置的数称为 S 的中位数。例如,若序列 S1=(11,13,15,17,19),则 S1 的中位数是 15,两个序列的中位数是含他们所有元素的升序序列的中位数。例如,若 S2=(2,4,6,8,10),则 S1 和 S2 的中位数是 11。现有两个等长升序序列 A 和 B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列 A 和 B 的中位数。要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用 C、C++ 或 Java 语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度和空间复杂度。