问题描述
for n in range (1,n):
for j in range(1,n+1):
k = 1
while k <= j:
sumfunc()
k *= 42
(Python代码,从1到n)
如果somefunc()
是影响因素,如何确定somefunc()
的调用次数以及由此算法的运行时间?
我只是将这种类型的其他问题转换为一些总和并加以解决,但这有点棘手。
我注意到直到n = 41
都是线性的,但是之后log42(n)
才涉及到,但是我不知道如何使用这个事实。
解决方法
从技术上讲,您只需要在代码执行前后获得一个时间戳,然后从after时间戳中减去before即可获得代码段的执行时间:
import time
t0 = time.time()
for n in range (1,n):
for j in range(1,n+1):
k = 1
while k <= j:
sumfunc()
k *= 42
t1 = time.time()
total = t1-t0