标签:深度 fun highlight printf 空间复杂度 需要 个数 单线程 递归算法
时间复杂度:执行算法需要消耗的时间长短
空间复杂度:执行当前算法需要消耗的存储空间大小
求解算法时间复杂度的具体步骤:
1.找出算法中的基本语句:算法中执行次数最多的那条语句,通常是最内层循环的循环体
2.计算基本语句的执行次数:只需保证基本语句执行次数的函数中的最高
复杂度对应的算法类型
常数阶O(1):
int a=0; int a=9; int c=8;
线性阶O(n):
for(i=0;i<=n;i++) { j=i; j++; }
平方阶O(n^2): 立方阶O(n^3)就是有三层循环
for(x = 1; i <= n; x++){ for(i = 1; i <= n; i++) { j = i; j++; } }
对数阶O(logN)
int i=1; while(i<n){ i=i*2; }
线性对数阶O(nlongN)
for(int i=0;i<n;i++) { while(i<n){ i=i*2; } }
空间复杂度
计算方法;
1.忽略常数,用O(1)表示
2.递归算法的空间复杂度=递归深度*每次递归所用分辅助空间
3.对于单线程,递归有运行的是堆栈,求的是递归最深的那一次压栈所耗费的空间个数,因为递归最深的那一次所耗费的空间足矣容纳所有的递归
空间复杂度O(n)=O(1)
1 int a; 2 int b; 3 int c; 4 printf("%d %d %d \n",a,b,c);
空间复杂度O(n*1)=O(n)。
1 int fun(int n,) 2 { 3 int k=10; 4 if(n==k) 5 return n; 6 else 7 return fun(++n); 8 }
标签:深度 fun highlight printf 空间复杂度 需要 个数 单线程 递归算法
原文地址:https://www.cnblogs.com/Sunshineboy1/p/13582004.html