数据结构——时间复杂度

时间复杂度

计算时间复杂度的步骤

题型1——一层循环

  1. 列出循环趟数t与每轮循环i的值

  1. 找到t与i之间的关系

  1. 确定停止条件

  1. 联立方程,解出时间复杂度

例题1

观察下列算法,计算其时间复杂度

i=n*n;
while(i!=1)
    i=i/2;

计算步骤:

  1. 循环趟数t:0,1,2,3……

每轮循环i的值:n^2,n^2/2,n^2/4,n^2/8……

  1. 找到两者关系:

i=n^2/(2)^t

  1. 循环结束条件i=1

  1. 联立计算

n^2/(2)^t=1——>

n^2=2^t——>

t=log2n

题型2——两层循环

  1. 列出外层循环i的变化值

  1. 列出内层循环语句的执行次数

  1. 内层循环语句的次数求和,计算结果

例题1

int m=0,i,j;
for(i=1;i<=n;i++)
    for(j=1;j<=2*i;j++)
        m++;

解:

1.外层循环i的值:1, 2, 3, 4, 5, 6, ……n

2.内层循环的次数:2, 4, 6, 8, 10, 12……2*n

3.求和,等差数列求和:(n(2+2*n))/2

O(n^2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值