题目详情

阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。

设有二维整数数组(矩阵)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。

你可能感兴趣的试题

单选题

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

  • A.0
  • B.1
  • C.2
  • D.3
查看答案
单选题

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

  • A.1、1
  • B.1、2
  • C.2、2
  • D.2、3
查看答案
单选题

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

  • A.3
  • B.4
  • C.5
  • D.6
查看答案
单选题

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

  • A.V(S3)和V(S5)V(S6)
  • B.P(S3)和V(S5)V(S6)
  • C.V(S3)和P(S5)P(S6)
  • D.P(S3)和P(S5)P(S6)
查看答案
单选题

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

  • A.243ms
  • B.246ms
  • C.254ms
  • D.280ms
查看答案

相关题库更多 +