关于时间复杂度的题

1.   以下算法的时间复杂度为( )。

void fun(int n){

int i=l;

while(i<=n)

i=i*2;

}

A. O(n)

B. O(n2)

C. O(nlog2n)

D. O(log2n)

选D   因为基本运算是i=i*2,可以设执行时间为T(n),则2T(n)<=n,即T(n)<=log2n=O(log2n)

2.  某算法的时间复杂度为O(n2),表明该算法的( )。

A.问题规模是n2

B.执行时间等于n2

C.执行时间与n2成正比

D.问题规模与n2成正比

选C     时间复杂度为O(n2),说明算法的执行时间T(n)<=c * n2(c为常数),即T(n)=O(n2)。

3. for(i=n-l;i>l;i--)

for(j=1;j<i;j++)

if(A[j]>A[j+l])

A[j]与 A[j+1]对换;

其中n为正整数,则最后一行的语句频度在最坏情况下是( )。

A. O(n)

B. O(nlogn)

C. O(n3)

D. O(n2)

选D   当所有相邻元素都为逆序时,则最后一行的语句每次都会执行。此时,所以在最坏情况下的该语句频度是O(n2)。

4. 分析以下程序的时间复杂度()

void fun(int n) 

 int i = l; 

 while (i <= n) 

  i = i * 2;

}

A.O(n)

B.O(n ^ 2)

C.O(nlogn)

D.O(logn)

选D   此函数有一个循环,但是循环没有被执行n次,i每次都是2倍进行递增,所以循环只会被执行log2(n)次

5.  分析以下程序的时间复杂度()

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

 for (int j = 0; j < n; j++)     

  a[i][j] = i * j;

A.O(n)

B.O(n^2)

C.O(nlogn)

D.O(logn)

选B    程序有两次循环,每个循环都有n次操作,所以时间复杂度为n^2

 

 

 

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值