复杂度分析---数据结构复习

时间复杂度

1 什么是时间复杂度?
算法的执行效率
算法的执行时间与算法的输入值的关系

2 大O表示法

def test(num):
    total=0;#执行时间a
    for i in range(num):#单个执行时间b,一共num个b   num*b
        total +=i;#单个执行时间c
    return total    

总共执行性时间 a+numb+c
由于 a,c与num
b之间时间差之太大,所以可以看成执行时间=num*b,记作O(n)
3 案例分析
O(1)

def 01(num):
     i=num
     j=num*2#a+b,与num无关
     return i+j
O(logN)
def OlogN(num):
    i=1#a
    while (i<num):
       i=i*2#执行log2 N次,一次b
    return i
    #总共时间 a+log2 N*b,可看做O(logN)

O(M+N)

def OMN(num1,num2):
   total=0
   for i in range(num1):m*b
       total+=i
   for j in range(num2):n*b
       total+=j
   return total        

O(NlogN)

def ONlogN(num1,num2):
   total=0
   j=0
   for i in range(num1):
       while(j<num2):
            total+=i+j
            j=j*2
   return total         

O(N^2)

def ON2(num):
   total=0
   for i in range(num):
       for j in range(num):
           total+=i+j
   return total        

重点看循环
4
时间复杂度对比
O(1)<O(logN)<O(N)<O(NlogN)<O(N^2)<O(2 ^N)<O(N ^2)

空间复杂度

1 什么是空间复杂度?
算法的存储空间与输入值之间的关系

先看下面两个代码

def test1(num):
    total=0
    for i in range(num):
         total+=i
    return total 


def test2(num):
    array=[]
    for num in nums:
        array.append(num)
    return array        

首先for循环是不占空间的,只有变量占空间
test1就是一个int 型total只占一个int空间所以
空间复杂度O(1)
test2 里有一个数组array,那么这个数组会占用n个空间,故他的空间复杂度为O(N)
空间复杂度取决于(1)变量类型(2)递归栈
常见空间复杂度 O(1),O(N),O(N ^2)(二维数组)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值