课时3
这个枚举法是把a,b,c三个都一个一个试。太花时间了。相当于,(0,0,0)(1,0,0)这样试,实在太麻烦了。
start_time=time.time()
for a in range(0,1001):
for b in range(0,1001):
for c in range(0,1001):
#c=1000-b-a
if a**2+b**2==c**2 and a+b+c==1000:
count+=1
print("此时a为{0},b为{1},c为{2},这是第{3}种方法".format(a,b,c,count))
end_time=time.time()
print("花费了:%d"%(end_time-start_time))
print("over")
执行结果:
此时a为200,b为375,c为425,这是第2种方法
此时a为375,b为200,c为425,这是第3种方法
此时a为500,b为0,c为500,这是第4种方法
花费了:808
over
用电脑实际测试下来花费了808s。
实际上只需要把c设置为“c=1000-b-a”,就可以了。这样if句也可以省略一个条件,也无需花费过多时间。
start_time=time.time()
for a in range(0,1001):
for b in range(0,1001):
c=1000-b-a
if a**2+b**2==c**2:
count+=1
print("此时a为{0},b为{1},c为{2},这是第{3}种方法".format(a,b,c,count))
end_time=time.time()
print("花费了:%d"%(end_time-start_time))
print("over")
执行结果:
此时a为0,b为500,c为500,这是第1种方法
此时a为200,b为375,c为425,这是第2种方法
此时a为375,b为200,c为425,这是第3种方法
此时a为500,b为0,c为500,这是第4种方法
花费了:0
over
1s不到,结束。
课时4
课时5
排序是否会影响计算时间呢?
课时6
课时7
列表添加元素时怎么计算时间复杂度呢?
因为添加元素不算是基本步骤,所以不能算作一步。
课时8
timer.timeit测算1000次后返回一个值,即花费时间,单位是秒。
import timeit
from timeit import Timer
def t1():
li=[]
for i in range(10000):
li+=[i]
def t2():
li=[]
for i in range(10000):
li.append(i)
def t3():
li=[]
li=[i for i in range(10000)]
def t4():
li=list(range(10000))
timer1=Timer(stmt="t1()",setup="from __main__import t1").timeit(1000)
print("t1+:",timer1)
执行结果:
Traceback (most recent call last):
File "F:/python/python_pycharm/class_test/python算法与数据/lesson07.py", line 24, in <module>
timer1=Timer(stmt="t1()",setup="from __main__import t1").timeit(1000)
File "E:\software\Anaconda\lib\timeit.py", line 109, in __init__
compile(setup, dummy_src_name, "exec")
File "<timeit-src>", line 1
from __main__import t1
^
SyntaxError: invalid syntax
Process finished with exit code 1
import timeit
from timeit import Timer
def t1():
li=[]
for i in range(10000):
li+=[i]
def test2():
li=[]
for i in range(10000):
li.append(i)
def test3():
li=[]
li=[i for i in range(10000)]
def test4():
li=list(range(10000))
timer1=Timer("t1()","from __main__import {0}".format(repr(t1)))
print("test1+:",timer1.timeit(1000))
执行结果:
Traceback (most recent call last):
File "F:/python/python_pycharm/class_test/python算法与数据/lesson07.py", line 24, in <module>
timer1=Timer("t1()","from __main__import {0}".format(repr(t1)))
File "E:\software\Anaconda\lib\timeit.py", line 109, in __init__
compile(setup, dummy_src_name, "exec")
File "<timeit-src>", line 1
from __main__import <function t1 at 0x000002119CBC3318>
^
SyntaxError: invalid syntax
import timeit
from timeit import Timer
def t1():
li=[]
for i in range(10000):
li+=[i]
def test2():
li=[]
for i in range(10000):
li.append(i)
def test3():
li=[]
li=[i for i in range(10000)]
def test4():
li=list(range(10000))
timer1=Timer("t1()","from __main__import t1")
print("test1+:",timer1.timeit(1000))
执行结果:
File "F:/python/python_pycharm/class_test/python算法与数据/lesson07.py", line 24, in <module>
timer1=Timer("t1()","from __main__import t1")
File "E:\software\Anaconda\lib\timeit.py", line 109, in __init__
compile(setup, dummy_src_name, "exec")
File "<timeit-src>", line 1
from __main__import t1
^
SyntaxError: invalid syntax