8.29 5道时间复杂度

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

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)

解析:基本运算是i=i*2,设其执行时间为T(n),则2T(n)<=n,即T(n)<=log2n=O(log2n)

2、分析以下程序段的时间复杂度是   O(n^2)  
for(i=O;i<n;i++)
        for(j=O;j<n;j++)
                A[i][i]=O;
解析:该程序段i层循环了n次,j层循环了n次,所以该时间复杂度为O(n^2)。

3、分析以下函数的时间复杂度( D   )。
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)

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

4、计算下面的时间复杂度

   for (int i = 0; i < n; i++) {// 执行n + 1 次

            System.out.println("Hello world"); // 执行n次
   }
解析:时间复杂度为:T(n) = 2n+1,根据上面的规则,最后:T(n) = O(n)

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

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

  a[i][j] = 0;

解:语句 a[i][j] = 0; 可推出执行次数为 m * n 次。所以时间复杂度为 O(m*n)。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值