算法复杂度


一、什么是复杂度

1.算法的概念

算法是特定问题求解步骤的一种描述。

2.复杂度

复杂度描述算法执行时间与数据规模的增长关系。用时间复杂度和空间复杂度来度量。

二、时间复杂度

1.什么是时间复杂度

T(n)=O(fn) 执行时间与执行的总次数成正比

T(n):执行时间

fn:执行的总次数

2.分析的方法

加法法则

总复杂度等于执行循环次数最多的那段复杂度。

T(n)=T1(n)+T2(n)=O(fn)+O(gn)=O(max(fn),g(n))

int sum=0
for(int i=0;i<n;i++){
sum+=i;
}
for(int j=0;j<100;j++){
sum+=j;
}
//时间复杂度O(n)

乘法法则:对于嵌套函数,总复杂为内外循环的乘积。

T(n)=T1(n)*T2(n)=O(fn)*O(gn)=O((fn)*g(n))

for(int j=0;j<=n;j++){
for(int i=0;i<=n;i++){
sum+=i;
}
}
// 时间复杂度O(n^2)
count=0;
for(k=1;k<=n;k*2){
for(j=1;j<=n;j++){
cpunt j++;
}
}
//内循环的条件与外循环的条件的变量无关,各自独立
//内循环复杂度为O(n)
//外循环复杂度:设执行了t次,循环条件k<=n,增量定义为k*2,当循环次数满足2ⁿ<=n,即t<=㏒₂ⁿ
//总复杂度:O(n*㏒₂ⁿ)2014年考研真题

三、空间复杂度

表示存储时间和数据规模之间的增长关系。

S(n)=O(g(n))

S(n):算法所耗费的存储空间

算法原地工作是指算法所需辅助空间为常量,O(1)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM