Python 测开27期 - 柒柒 - 算法性能评估

1. 概论

  • 时间复杂度
  • 空间复杂度

2. 时间复杂度

渐进时间复杂度,表示算法的执行时间与数据规模之间的增长关系

  • 规模:水 ↔ 水杯:水
  • 测试环境:手机 ↔ 电脑:手机

2.1 大O表示法

def tmp(n):
	add = 0
	for i in range(n):
		add += i
	return add

上述代码的时间复杂度T(n) = (2n + 1)* unit

  • 运行每一行都是1unit
  • T(n) = O(f(n))
    • O表示T(n) 与 f(n) 成正比
    • O表示渐近时间复杂度,表示代码执行时间随数据规模增长的变化趋势
    • 在采用大O标记复杂度的时候,可以忽略系数、常量

只关注循环次数多的代码

def tmp(n):
	add = 0
	for i in range(n):
		add += i
	return add

O(n)

选大量级

def tmp(n):
	for i in range(999):
		print(123)
		
	for i in range(n):
		print(1)
		
	for i in range(n):
		for j in range(n):
			print(2)

$O(n^2)$

嵌套循环要乘积

def tmp(n):
	for i in range(n):
		a(n)
		
def a(n):
	for i in range(n):
		pring(1)

$O(n^2)$

3. 空间复杂度

渐进空间复杂度是,存储空间与数据规模之间的增长关系

def tmp(n):
	a = [1]*n
	for i in a:
		print(i)

第二行是O(n)