时间复杂度的了解

了解数据结构中时间复杂度

时间复杂度是描述算法效率的一种量度,记作:

T(n)=O(f(n))

f(n)是正整数n的一个函数,n可以理解为问题的规模,随着问题规模的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的时间复杂度。另外我们还要了解频度的概念,频度指的是该语句重复执行的次数。我们用基本操作:“x增1”来举例。

1.{++x}//++x与x++都表示x增1,但++x是先自增1再计算x的值,x++是先计算x的值再增1此处x增1重复执行了一次,时间复杂度为O(1)

2.for(i=1;i<=n;++i){++x;}此处因为有循环,循环一次执行一次,时间复杂度为O(n)

3.此处是双层循环,外层循环一次,内层循环n次,时间复杂度为O(n^2)

for(j=1;j<=n;++j){
 for(k=1;k<=n;++k){
  ++x;
 }
}

了解到了时间复杂度,我们看看时间复杂度的比较:

在这里插入图片描述

就跟高中数学里函数一样,时间复杂度遵循函数增长规律,增长越快的重复次数越多,频度越高越复杂。因此在程序较为复杂难以求出准确循环次数时,我们就考虑他的问题规模增长率。

2n>1/2n3>5n^2>100n>200log2n,常数忽略不计,增长率就按这个记。

辨认的简单办法:

1.简单但不一定准确的确认方法,就是看看有几层循环,复杂度就是n的几次方,假如有m层循环,复杂度就是n^m.

2.如果一个算法里有多个部分,每个部分时间复杂度不一样,那么取最其中最大的时间复杂度。

3.对于条件判断语句,同样取其中时间复杂度最大的路径作为总的时间复杂度。

详细解释推荐看这位博主的文章

//www.jianshu.com/p/f4cca5ce055a)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值