时间复杂度与空间复杂度
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;
以上是关于时间复杂度与空间复杂度的主要内容,如果未能解决你的问题,请参考以下文章