一、什么是复杂度
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)