讨论程序的优劣,算法分析关心的是计算资源的使用情况,在同样的时间使用更少的资源或用同样的资源使用更少的时间。一种方法是在同样的时间内使用更少的内存;另一种是观察执行时间或运行时间。 可以在程序开始前后调用time模块进行统计。
def sumof2(n):
start = time.time()
thesum = 0
for i in range(1,n+1):
thesum = i +thesum
end = time.time()
return end-start
数量级,也称大O计数法,它为计算步骤数提供了一个近似方法,在评估算法的时候,只考虑影响最大的一部分内容。如对于一个一元二次方程表达的步骤数,只考虑影响最大的平方项部分。
最好情况、最坏情况、平均情况是数据集差异对算法造成的影响。
常见的大O表示。
对于以上算法,赋值语句的复杂度分别为1,前三行复杂度为3,循环复杂度为n,4-8行当循环中套了一个循环,循环语句有三条,因此复杂度为3n^2,而9-11行复杂度为2n,最后一个赋值语句复杂度为1.结合起来:
n^2起主要作用。
python数据结构的性能
列表赋值和索引的复杂度是常数阶的,与列表长度无关。
而对于加长列表操作,追加的复杂度是常数阶,而连接是长度k。