for循环中每条语句执行的次数以及时间复杂度的计算

示例代码展示

1.for(i=1;i<=n;i++){										//n+1次
2. 	for(j=1;j<=n;j++){									//n(n+1)次
3. 		c[i][j]=0;											//n*n次
4.		for(k=0;k<n;k++)								//n*n*(n+1)次
5.			c[i][[j]=c[i][[j]+a[i][j]*b[k][j];			//n*n*n次
6.	}
7.}

示例代码为两个n × n矩阵相乘的算法

  • 我们把算法所耗费的时间定义为该算法每条语句的频度之和
    T(n)=2n3 +3n2 2n+1

算法的时间复杂度例题


 1. i=1;
 2. while(i<=n)
 3. 	i=i*2;

在这里插入图片描述
在这里插入图片描述

  1. 若循环执行一次:i=1*2=2,
  2. 若循环执行一次:i=2*2=22,
  3. 若循环执行一次:i=2*2=23,
  4. 若循环执行X次:i=2x
    设语句 i+i*2 执行次数为x次,
    由循环条件i<=n,所以2x <=n,所以 x<=log2 n

2f(n) <=n,即f(n)<=log2 n,取最大值,f(n) = log2 n,
所以该程序段的时间复杂度T(n)=O(log2 n)。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值