标签:== 空间 测试数据 结果 表示 渐进 测试 引入 大小
import time
start_time = time.time()
for a in range(0, 1001):
for b in range(0, 1001):
for c in range(0, 1001):
if a**2 + b**2 == c**2 and a+b+c == 1000:
print("a, b, c: %d, %d, %d" % (a, b, c))
end_time = time.time()
print("elapsed: %f" % (end_time - start_time))
print("complete!")
a, b, c: 0, 500, 500
a, b, c: 200, 375, 425
a, b, c: 375, 200, 425
a, b, c: 500, 0, 500
elapsed: 214.583347
complete!
依据三个变量之间的关系,减少一个变量,降低维度
import time
start_time = time.time()
for a in range(0, 1001):
for b in range(0, 1001):
c = 1000-a-b
if a**2 + b**2 == c**2:
print("a, b, c:%d, %d, %d" % (a, b, c))
end_time = time.time()
print("times:%d" % (end_time - start_time))
a, b, c:0, 500, 500
a, b, c:200, 375, 425
a, b, c:375, 200, 425
a, b, c:500, 0, 500
times:1
事后统计法:把代码跑一遍,通过统计、监控,就能得到算法执行的时间和占用的内存大小。
测试结果受数据规模的影响很大
需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。
时间复杂度分析
只关注循环次数最多的一段代码
加法法则:总复杂度等于量级最大的那段代码的复杂度
乘法法则:嵌套代码的复杂度等于嵌套内外代码的复杂度
O(m+n)、O(m*n)
代码复杂度由两个数据的规模来决定
渐进空间复杂度:表示算法的存储空间与数据规模之间的增长关系。
算法完成工作最少需要多少基本操作,即最优时间复杂度
算法完成工作最多需要多少基本操作,即最坏时间复杂度
算法完成工作平均需要多少基本操作,即平均时间复杂度
标签:== 空间 测试数据 结果 表示 渐进 测试 引入 大小
原文地址:https://www.cnblogs.com/linyk/p/11581486.html