码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构之时间复杂度 C语言

时间:2020-03-14 16:25:03      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:去除   输入   数据   void   策略   数据结构   n+1   img   +=   

算法的时间复杂度:用O()表示,执行次数=时间,随着输入规模n增大,T(n)增长最慢的算法为最优算法。
如何计算时间复杂度:
用常数1取代运行时间中的所有加法常数
在修改后的运行次数函数中,只保留最高阶项
如果最高阶项存在且不是1,则去除与这个项相乘的常数
得到的最后结果就是O阶

int i,n=100,sum=0;
for(i=0;i<n;i++){
sum+=i;
}
上述代码时间复杂度为O(n),因为执行100次,循环的时间复杂度为循环体的时间复杂度乘该循环运行的次数。
int i,j,n=100,sum=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
sum+=i;
}
}
时间复杂度为O(n2)。


int i,j,n=100,sum=0;
for(i=0;i<n;i++){
for(j=i;j<n;j++){
sum+=i;
}
}


当i=0时执行n次,i=1时执行n-1次,...... 时n+(n-1)+(n-2)+....+1=n(n+1)/2,因此根据策略为O(n2)

int i=1,n=100;
while(i<n){
i=i*2;
}


此程序是每次执行i=i*2然后和n比较,设执行次数为x,当执行x个2相乘的时候大于或者等于n就会推出循环即x*2=n,x=log(2)n,因此时间复杂度为O(logn)。

函数的时间复杂度分析:
int i,n=100,sum=0;
for(i=0;i<n;i++){
function(i);
}

void function(int count){
printf("%d",count);

}
函数的时间复杂度为O(1),即总体为O(n)。

 

 

技术图片

 

数据结构之时间复杂度 C语言

标签:去除   输入   数据   void   策略   数据结构   n+1   img   +=   

原文地址:https://www.cnblogs.com/yh2924/p/12492363.html

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