数据结构&算法基础——复杂度分析

复杂度分析(上)

  • 什么是复杂度
    • 一段程序它执行所需要的时间(次数)

代码演示

def func():
	a = 1
    b = 2
    c = 3

if __name__ =='__main__':
    func()
# 时间复杂度? -> 执行次数

上述代码他的复杂度:

假设每次执行都花了 unit_t 时间,上述代码(func) 执行了3次,花费 3 * unit_t 的时间。

代码演示2

# 代码演示2
def func2(n):
    sum = 0 # unit_t
    for i in range(n): # n * unit_t
        sum += i # n * unit_t
    return sum

分析:

上述代码执行的次数:2*n +1;

执行时间: T = (2 * n + 1) * unit_t

代码演示3

# 代码演示3
def func3(n):
    for i in range(n): # n 次
        for j in range(n):# n*n 次
            print(i * j) # n*n 次

分析:

执行次数: n^2次

时间: 2*n^2 * unit_t

  • 时间复杂度
    • 大O表示法
  • 对于有限次数,例如代码示例1——执行次数有限,O(1)
  • 线性相关的,比如实例2——O(n),比如实例3——O(n^2)
  • 复杂度只取最高次幂;

代码演示4

# 代码演示4
def func1(n):  # O(n)
    sum = 0
    for i in range(n):
        sum += i
    return sum

def func2(m): # O(n^2)
    sum = 0
    for i in range(m):
        for j in range(m):
            sum += i * j
    return sum

def fun3(o): # O(n) + O(n^2) 
    return func1(o) + func2(o)

分析: func3的时间复杂度?

T(n) = O(n)+O(n^2)

O(n^2)

代码示例5

# 示例5
def func5(n):
    i = 1
    while i < n:
        i *= 3

假如,n = 27;

第一次: i = 3

第二次: i = 9

第三次: i = 27

log 3 27 = 3

  • 时间复杂度: O(log3N) -> O(3logC * log N) -> O(logn)

  • 小结

    • 明确了复杂度和计算机执行时间的关系
    • 复杂度的概念
    • 常见的复杂度 O(1)、O(n) 、O(n^2) 、O(logn)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值