#python是数据结构笔记一
#引入:以一道题来展示
#如果a+b+c = 1000,且a^2+b^2 = c^2(a,b,c为自然数),求a,b,c可能的组合
T = 1000*1000*1000*2
#引入:以一道题来展示
#如果a+b+c = 1000,且a^2+b^2 = c^2(a,b,c为自然数),求a,b,c可能的组合
#解析:
#枚举法
#思路:
#a=0......
#b=0......
#c=?......
#先让其中的一个数a去不变,b变化,当b确定一个数的时候c去变化(也就是利用循环嵌套的方式)
#一个个的试,那么就有多钟组合,用计算机设计程序
import time
start_time = time.time()
for a in range(0,1001):#1000次
for b in range(0,1001):#1000次
for c in range(0,1001):#1000次
if a+b+c==1000 and a**2 + b**2 == c**2 :
print("a, b, c :%d, %d, %d"%(a, b, c))#加上上一步是2次
end_time = time.time()
print("finished")
T = 1000*1000*1000*2
若将a+b+c = 2000
T = 2000*2000*2000*2
若将a + b + c = n(n就是这个问题规模)
时间复杂度 T = n*n*n*2
对于时间复杂度而言,是与问题的规模n有关的
用函数来表示
T(n) = n^3*2
但是我们在分析的时候是不用关心精确数据的,为了更好的分析,就去掉了旁枝末节
例如T(n) = n^3*2和T(n) = n^3*3是同一个数量级的,所以只看n^3部分就可以了,认为和n^3是同一个变化走势的,称2和3是系数,而系数2或3是不影响变化走势的,所以可以去掉
就把这个T(n)记作大O表示法。其实就是加个大O,变成这样 T(n) = O(n^3)