简单计算一些算法的时间复杂度

文章详细分析了五种编程语言中涉及的循环结构,计算了它们的时间复杂度,分别是线性、平方、平方和对角线增长。重点展示了如何通过数学方法确定内层循环的执行次数和整体复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.

x=90;y=100;
while(y>0)
if(x>100)
{
x-x-10;
y--;
}
else x++;

时间复杂度:O(1)

2.

for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=0;

时间复杂度:O(n*m)

3.

s=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s+=B[i][j];
sum=s;

时间复杂度:O(n^2)

4.

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

时间复杂度:O(n)

5.

x=0;
for(i=1;i<n;i++)
for(j=1;j<n-i;j++)
x++;

时间复杂度:O(n^2)

分析:

对于外层循环变量i的取值从1到n-1,内层循环变量j的取值从1到n-i-1。 下面是内层循环的执行次数:

第一次循环: j的取值范围是1到n-1-1=n-2,循环次数为n-2次 第二次循环: j的取值范围是1到n-2-1=n-3,循环次数为n-3次 ... 第n-1次循环: j的取值范围是1到1-1=0,循环次数为0次

因此,内层循环的总执行次数为(n-2) + (n-3) + ... + 1 + 0,这是一个等差数列求和,可以使用等差数列求和公式计算:

(n-2) * (n-2 + 1) / 2 = (n-2) * (n-1) / 2

所以,这段代码的时间复杂度是 O(n^2)。

6.

x=n;//n>1
y=0;
while(x>=(y+1)*(y+1))
y++;

时间复杂度:O(√n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值