C语言之时间复杂度&空间复杂度
Posted Ja_king_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言之时间复杂度&空间复杂度相关的知识,希望对你有一定的参考价值。
一.时间复杂度
1.算法的时间复杂度
记忆方法:常对幂指阶
2.一个循环结构:
T(n)=O(n)
循环结构中嵌套循环结构时:
T(n)=O(n*n)
3.顺序执行的代码只会影响常数项,可以忽略
4.只需挑循环结构中某一条语句进行分析
void loveYou(int n){
int i = 1;
while (i <= n) {
i *= 2;
printf("love you!!");
}
printf("fight!!!");
}
假设循环x次
分析循环可知i=2的x次方
所以x=log2n,即T(n)=O(log2n)
二.空间复杂度
1.无论问题规模如何变化,算法运行所需的内存空间都是固定的常量,算法空间复杂度为:
S(n)=O(1)
void tese(int n){
int flag[n];
int i;
}
假设一个int变量占4B…
则所需内存空间为=4+4n+4=4n+8
即S(n)=O(n)
3.若定义一个二维数组:
void tese(int n){
int flag[n][n];
int i;
}
则空间复杂度为:S(n)=O(n*n)
4.函数递归调用也会带来内存开销
空间复杂度为:S(n)=O(n) (递归调用深度)
以上是关于C语言之时间复杂度&空间复杂度的主要内容,如果未能解决你的问题,请参考以下文章