码迷,mamicode.com
首页 > 其他好文 > 详细

时间复杂度 && 空间复杂度

时间:2020-09-09 19:15:04      阅读:37      评论:0      收藏:0      [点我收藏+]

标签:深度   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!