算法的主运算如下,其中i的初值为1,s的初值为0,“←”为赋值号。while i<n do{ for j←1 to n dos←s+a[

题目

算法的主运算如下,其中i的初值为1,s的初值为0,“←”为赋值号。 while i<n do { for j←1 to n do s←s+a[i,j] i←i*2; 则该算法的时间复杂度为 ( )

A.O(2n)

B.O(n+log2n)

C.O(nlog2n)

D.O(n2)

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

在数组A[0,1,……,n-1]中查找给定值K的算法大致如下: i=n-1; While(i>=0&&(A[i]!=k)) i--; return i; 该算法的时间复杂度为 () A O(n) B 无法确定 C O(n-i) D O(n-i+1)


O(n)

第2题:

下面两个程序段中,变量sum与i的初值均相同,在()情况下,两个程序段的执行结果不同。 (1)while(i<=10) (2)do { { sum+=i; sum+=i; i++; i++; } }while(i<=10) ;

A.i的初值大于10

B.i的初值小于10

C.任意条件

D.sum的初值为0


i 的初值大于 10

第3题:

分析下面语句段执行的时间复杂度。 (1)for (int i=0; i<n; ++i) { ++p; } (2) for (int i<0; i<n; ++i) { for (int j =0; j<m; ++j) { ++p; } } (3) i = 1; while(i <= n) { i *= 3; } (4) int i = 1; int k = 0; do { k = k+10*i; ++i; } while(i!=n);


(1)O(1) (2)O(nm) (3) (4) (5) (6)

第4题:

根据下列算法判断正确的是: Step1:对循环控制变量i赋初值,n赋初值为0; Step2:判断i>10是否成立,若成立,则执行step3,否则执行Step4; Step3:循环控制变量i加1,n=i再转到step2; Step4:输出n。

A.若i的初值为1,则最终输出结果n=10。

B.若i的初值为0,则最终输出结果n=9。

C.若i的初值为1,则最终输出结果n=9。

D.若i的初值为1,则最终输出结果n=0。


若 i 的初值为 1 ,则最终输出结果 n=0 。

第5题:

对于以下语句,表述正确的是 int i , j = 5 ;

A.i 没有被赋初值,j 的初值为5

B.i 和 j 的初值均为 5

C.i 的初值为0,j 的初值为5

D.i 和 j 的初值均为 0


i 没有被赋初值,j 的初值为5

第6题:

下面的程序段的时间复杂度为【】

s=0;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

s=s+a[i][i];

A.O(1)

B.O(m+n)

C.O(log2mn)

D.O(m*n)


正确答案:C
[解析]一个算法在计算机运行时所耗费的时间用时间复杂度来度量.算法的时间复杂度是算法输入规模或问题规模的函数,一般不必算出精确值,更关心的是相应的数量级.算法的时间复杂度与算法中语句的执行次数有直接关系,而语句的执行次数又取决于问题规模n的大小.实际上求解时间复杂度的方法是算出算法中执行频度最大的那条语句的频度,取其数量级放入 O( )中.

第7题:

算法的主要运算如下,其中i的初值为0,s初值为0,“=”为赋值号。 While i<n do { s=0; While s<n do { s=s+1; } i=i+1; } 该算法的时间复杂度为()

A.O(2n)

B.O(n+log2n)

C.O(nlog2n)

D.O(n2)


正确答案:D
解析:程序中有两个嵌套的n循环,故时间复杂度为O(n2)。

第8题:

算法的主要运算如下: While i<n do { s=0; While s<n do { s=s+1; } i=i+1; } 其中i的初值为0,s初值为0,“=”为赋值号。该算法的时间复杂度为()

A.O(2n)

B.O(n+log2n)

C.O(nlog2n)

D.O(n2)


正确答案:D
解析:程序中有两个嵌套的n循环,故时间复杂度为O(n2)。

第9题:

程序段s=i=0;do{i=i+1;s=s+i;}while(i=n);的时间复杂度为()。

A、O(n)

B、O(nlog2n)

C、O(n)

D、O(n/2)


参考答案:A