- 用python描述时间复杂度和大O表示法
- 问题描述
- 解决方案1
- 解决方案2
- 总结与分析
如果存在三个数都在1000以内,三个数相加等于1000 ,并且三个数满足 a方加b方等于c方,那么想要计算这三个数都有那些方法?
解决方案1import time
print('第一种方案')
start_time = time.time()
for a in range(0, 1000):
for b in range(0, 1000):
c = 1000 - a - b
if a ** 2 + b ** 2 == c ** 2:
print(a, b, c)
end_time = time.time()
print("time:%d" % (end_time - start_time))
解决方案2
import time
print('第二种方案')
start_time = time.time()
for a in range(0, 1000):
for b in range(0, 1000):
for c in range(0, 1000):
if a + b + c == 1000 and a ** 2 + b ** 2 == c ** 2:
print(a, b, c)
end_time = time.time()
print("time:%d" % (end_time - start_time))
总结与分析
方法一运行时间接近于0秒,方法二运行时间大概105秒。
由此可见,当分析一个问题的时候,要尽量的降低时间复杂度,也就是遍历循环的次数。



