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

算法效率-时间复杂度

时间:2020-06-24 19:45:12      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:计算   tab   head   计算方法   实现   plain   统计   com   期望   

算法效率的度量方法

事后统计

直接跑了比较时间,这个方法用的比较少,不推荐。

事前分析估算

在计算机程序编写前,以拒统计方法来估算

 

因素:

1.算法的策略和方法

2.编译产生的代码质量

3.问题的输入规模

4.机器执行指令的速度

 

只需要关心实现的算法

 

时间复杂度:大O阶方法:

计算公式

T(n) = O(f(n))

n为问题的规模,f(n)为语句关于n所占存储空间的函数。

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作T(n)=O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)增长率相同,称做算法的渐进时间复杂度,又叫时间复杂度

分析时间复杂度O阶方法:

1.用常数1取代运行时间中的所有加法常数:

好比printf,x+=1

2.在修改后的运行次数函数中,只保留最高阶项

3.如果最高阶项存在且不是1,通通保留为1

 

 

特殊:

对于对数阶:

比如 需要 2^x = n退出循环,那么x = log(2)n 所以时间复杂度就是O(logn)这里的底数表示所有底数

 

 

函数调用的时间复杂度:

直接把所有的立出来,然后取最高采用大O阶计算方法的就完事了

 

 

常用的时间复杂度

技术图片

 

 技术图片

 

 

 

最坏情况和平均情况:

如果说一来就直接把目的flag找到了,那么O(1)最坏就是最后才找到就是O(n)

平均运行时间是期望的运行时间

 

 

空间复杂度

空间复杂度是可以和时间复杂度互相交换的,可以通过牺牲空间复杂度而降低时间复杂度,或者相反。

S(n) = O(f(n))公式和时间复杂度公式相近。

通常用时间复杂度来指运行时间的需求,用空间复杂度来表示空间的需求。

而通过要求复杂度都是求时间复杂度。

算法效率-时间复杂度

标签:计算   tab   head   计算方法   实现   plain   统计   com   期望   

原文地址:https://www.cnblogs.com/beautiful7/p/13189314.html

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