外循环运行n次,但我无法找到内循环的运行时间和总运行时间,你可以帮忙解决这个问题吗?
def function(n)
count=0
if n<=0:
return
for i in range(1,n):
j=1
While j<n:
j=j+i
count = count+1
print(count)
答案 0 :(得分:1)
对于O(n/i)
的每个值,内部循环运行i
次。
如果我们总结i
的所有值,我们得到:
n/1 + n/2 + n/3 + ... + n/n = n* (1 + 1/2 + ... + 1/n)
总和1 + 1/2 + ... + 1/n
是harmonic number,位于O(logn)
,因此您的代码为O(nlogn)