阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。
设有二维整数数组(矩阵)A[1:m,1:n],其每行元素从左至右是递增的,每列元素从上到下是递增的。以下流程图旨在该矩阵中需找与给定整数X相等的数。如果找不到则输出“False”;只要找到一个(可能有多个)就输出“True”以及该元素的下标i和j(注意数组元素的下标从1开始)。
例如,在如下矩阵中查找整数8,则输出为:True,4,1。

流程图中采用的算法如下图所示:从矩阵的右上角元素开始,按照一定的路线逐个取元素与给定整数X进行比较(必要时向左走一步或向下走一步取下一个元素),直到找到相等的数或超出矩阵范围(找不到)。

该算法的时间复杂度是(5)。
供选择答案:
A.O(1)
B.O(m+n)
C.(mn)
D.O(m2+n2)
正确答案及解析
正确答案
解析
(1)n
(2)j-1→j
(3)i+1→i
(4)j
(5)B
解析:按顺序分析程序流程如下:
(1)读题,可以看出元素查找的过程为从右上角开始,往左或者往下进行查找。因此,初始值i=1,j=n;
(2)如果查找值小于右上角值,则往左移动一位再进行比较。所以,第二空填j-1→j;
(3)接下来是判断什么时候跳出循环。此时,终止循环的条件是:j=0,也就是其从最右端移到最左端。再看X<A[i,j]不成立时,执行流程的右分支。此时,也就是说第一行的最大值都小于查找值,因此需往下移动一行。所以第三空填i+1→i;
(4)此处判断循环终止的条件,由(3)可知应填j;
(5)由于该算法每次只向右或向下走一步,故最坏情况下应当为走完数组一行和一列,故算法的复杂度应当为O(m+n),故应选择B。
你可能感兴趣的试题
一台主机的IP地址为202.123.25.36,掩码为255.255.254.0。如果该主机需要在该网络进行直接广播,那么它应该使用的目的地址为( )
-
- A.202.123.25.0
- B.202.123.25.255
- C.202.123.24.0
- D.202.123.24.255
- 查看答案
在计算机系统的日常维护工作中,应当注意硬盘工作时不能__(2)__。另外,需要防范病毒,而__(3)__是不会被病毒感觉的。
-
- A.电子邮件
- B.硬盘
- C.U盘
- D.ROM
- 查看答案
有 4 个 IP 地址:201.117.15.254、201.117.17.01、201.117.24.5 和 201.117.29.3,如果子网掩码为 255.255.248.0,则这 4 个地址分别属于3个子网;其中属于同一个子网的是()
-
- A.201.117.15.254 和 201.117.17.01
- B.201.117.17.01 和 201.117.24.5
- C.201.117.15.254 和 201.117.29.3
- D.201.117.24.5 和 201.117.29.3
- 查看答案
在异步通信中,每个字符包含1位起始位、7位数据位、1位奇偶位和1位终止位,每秒钟传送200个字符,采用4相位调制,则码元速率为()。
-
- A.50波特
- B.500波特
- C.550波特
- D.1000波特
- 查看答案
在 Windows 中,运行( )命令得到下图所示结果。以下关于该结果的叙述中,错误的是( )。
Pinging 59.74.111.8 with 32 bytes of data:
Reply from 59.74.111.8: bytes=32 time=3ms TTL=60
Reply from 59.74.111.8: bytes=32 time=5ms TTL=60
Reply from 59.74.111.8: bytes=32 time=3ms TTL=60
Reply from 59.74.111.8: bytes=32 time=5ms TTL=60
Ping statistics for 59.74.111.8:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 3ms, Maximum = 5ms, Average = 4ms
-
- A.该命令使得本地主机向目标主机发送了 4 个数据包
- B.本地主机成功收到了目标主机返回的 4 个数据包
- C.本地主机与目标主机连接正常
- D.该命令用于查看目标主机的 IP 地址
- 查看答案