时间复杂度与空间复杂度

Posted 萌新的日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间复杂度与空间复杂度相关的知识,希望对你有一定的参考价值。

(文章目录)

一、时间复杂度

1.概念

2.大O的渐进表示法

3.练习题

1.常规情况

void Func1(int N)//Func1的操作次数

  int count=0;
  for( int i=0;i<N;i++)
  
   for(int j=0;j<N;j++)
   
     count++;
   
  
  for(int k=0;k<2*N;k++)
  
    count++;
  
  int M=0;
  while(M--)
  
   count++;
  
  printf("%d\\n",count);


  void Fun2(int N)//计算Fun2的操作次数
  
   int count=0;
   for(int k=0;k<2*N;k++)
   
   count++;
   
   int M=10;
   while(M--)
   
     count++;
   
   printf("%d\\n",count);
  
void fun4(int N)//计算fun4的操作次数

 int count=0;
 for(int k=0;k<100;k++)
 
  count++;
 
 printf("%d\\n",count);
 

2.特殊情况

void bubblesort(int *a,int n)//冒泡排序 的bubblesort的操作次数

 assert(a);
 for(size_t end=n;end>0;end--)
 
   int exchange=0;
  for(size_t i=1;i<end;i++)
  
   if(a[i-1]>a[i])
   
    swap(&a[i-1],&a[i]);
    exchange=1;
   
  
  if(exchange==0)
  break;
 

   
void binarysearch (int *a,int n, int x)//二分查找的操作次数

 assert(a);
 int begin=0;
 int end=n;
 while(begin<end)
 
 int mid=begin+(end-begin)>>1;
 if(a[mid]<x)
 
  begin=mid+1;
 
 else if(a[mid]>x)
 
  ned=mid;
 
 else
  
  return mid;
  

 return  -1;

  
 
 long long factorial(size_t N)//阶乘
 
  return N<2?N:factorial(N-1)*N;
 

假设为3时得递归展开图

二、空间复杂度

1.概念

2.用法

void bubblesort(int *a,int n)//冒泡排序 的bubblesort的空间复杂度

 assert(a);
 for(size_t end=n;end>0;end--)
 
   int exchange=0;
  for(size_t i=1;i<end;i++)
  
   if(a[i-1]>a[i])
   
    swap(&a[i-1],&a[i]);
    exchange=1;
   
  
  if(exchange==0)
  break;
 

long long*fibonacci(sizse_t n)

  if(n==0)
  
    return NULL;
  
  long long*fibary=(long long*)malloc((n+1)*sizeof(long long));
  fibary[0]=0;
  fibary[1]=1;
  for(int i=2;i<=n;i++)
  
   fibary[i]=fibary[i-1]+fibary[i-2];
   
   return fibary;
 

以上是关于时间复杂度与空间复杂度的主要内容,如果未能解决你的问题,请参考以下文章

时间复杂度和空间复杂度计算方式

数据结构C语言 《一》斐波那契数 时间,空间复杂度详述

算法入门什么是时间复杂度和空间复杂度,最优解

算法入门什么是时间复杂度和空间复杂度,最优解

算法的时间复杂度和空间复杂度

数据结构 时间复杂度_空间复杂度