4 时间复杂度和空间复杂度(2)

1 时间复杂度O(f(n))

执行次数T(n)关于问题规模n的函数,分析T(n)随n的变化情况确定T(n)的数量级,记为T(n)=O(f(n)),f(n)为量级(最高次数项与系数无关),且算法执行时间增长率和f(n)的增长率相同。

1.1例如:

计算 1 + 2 + 3 + … + n
累加算法1:输入问题规模n,循环执行了T(n)=n次,时间复杂度:O(n^1)
s=0
i=1
while i<=100
s=s+i
i=i+1
直接算法2:输入问题规模n,执行了T(n)=1次,时间复杂度:O(n^0)=O(1)
s=n*(n+1)/2

1.2 量级

常数阶(零阶)O(1);
线性阶(一阶)O(n):如单层循环;
平方阶(二阶)O(n^2):如嵌套循环;
对数阶:2^x=n,执行一定次数x达到问题规模n,时间复杂度,计为T(n)=O(log2n);
立方阶(三阶)O(n^3);
n倍对数阶O(nlog2n);
指数阶O(2^x);

1.3 最坏情况和最好情况及正常平均的时间复杂度,其中主要考虑最坏情况的时间复杂度

2 空间复杂度

算法复杂度是指计算算法所需的存储空间,算法空间复杂度S(n)=O(f(n))
f(n)是关于问题规模n所占空间的函数。

2.1 例如

方式一:每给一个年份,写一个判断是否为闰年的算法;
方式二:事先编制好所有年份(共2050年)成一个列表字典,这样可以直接查询得到;
两种方式区别:方式一节省了空间(成本)但是时间可能会长,方式二节省了时间(效率)但是耗费了内存,当然两者可以相互换取,也要分根据计算机情况而定;

2.2 特别

空间和时间复杂度的互换,采用方式一和二要视情况而定,例如内存只有64k,你方式二列表字典2050个元素的内存比64k大,无法运行此算法,此时选择方式最好

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值