首页 > 编程语言 > 详细

数据结构与算法(一):时间与空间复杂度

时间:2020-03-01 15:53:40      阅读:53      评论:0      收藏:0      [点我收藏+]

1,渐进时间复杂度

T(n)=O(F(n)) 

F(n)表示解决问题的函数,T(n)表示函数F(n)的增长率

表示随问题规模n的增加,算法执行时间增长率与F(n)的增长率相同

 

2,时间算法类型

多项式时间算法:O(1)<O(logn)<O(n)<O(nlogn)<O(n²)

指数时间算法:O(2?)<O(n!)<O(n?)

 

3,时间复杂度具体分析

假定每条语句执行时间为单位时间,时间复杂度是所有语句重复执行次数之和

eg:

def complexity(n,a,b,c):
    #这里执行代码时间复杂度为O(1)
for i in range(n):#这行代码时间复杂度为O(n+1)
#这里执行代码时间复杂度为O(n)
for j in range(n):#这行代码时间复杂度为O(n*(n+1))
#这里执行代码时间复杂度为O(n*n) a[i][j]=0
for k in range(n):#这行代码时间复杂度为O(n*n*(n+1))
#这里执行代码时间复杂度为O(n*n*n) a[i][j]=b[i][j]*c[i][j]

加和得:T(n)=2n*n*n+3n*n+2n+1

但实际分析中并不考虑这么复杂,只考虑最内层嵌套循环的时间复杂度也就是O(n*n*n)

 

4,时间复杂度的乘法规则

T(n,m)=T1(n)*T2(m)=O(f(n)*g(m))

eg.

for i in range(n):
    for j in range(i,n):
        if a[i]>a[j]:
            a[j],a[i]=a[i],a[j]

第二层for循环共执行n次,每次其内部时间复杂度各不相同,全部加和如下:

(n)+(n-1)+(n-2)+(n-3)+...+2+1=(n+1)/2*n

时间复杂度为O(n²)

 

5,时间复杂度的加法规则

T(n,m)=T1(n)+T2(m)=O(max(f(n),g(m)))

就是两个并列函数(同一层级)选取一个最耗费性能的作为时间复杂度

 

6,空间复杂度(待更)

数据结构与算法(一):时间与空间复杂度

原文:https://www.cnblogs.com/shitianfang/p/12390122.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!