여러분도 알다시피 나는이 모든 런타임 분석을 통해 여전히 꽤 새로운데, 계산하는 각 단계가 올바른지 확인하고 싶습니다. 또한 파이썬 대신 이렇게 의사 코드 형식으로 작성하는 것을 싫어합니다. 여기에 평균에 대한분산의 점근 시간은 얼마입니까?
def mean(n):
sum = 0 #cost = 1
for i in n: #cost = n
sum += i #cost = n
return sum/len(n) #cost = 1
따라서 전체 실행 시간을 간다 = O (1) + O (N) + O (N) + O (1) = O (n)이
(정정 해줘 메신저 잘못된 경우)def variance(n):
var = 0 #cost = 1
for i in n: #cost = n
var += (i-mean(n))**2 #cost = n*n or n+n ??
return var/len(n) #cost = 1
질문 전체 분산 시간은 어떻게됩니까? 모든 일을 보여줄 수 있습니까? O (N) 작업을 N 번 수행하므로
흠 평균 값이 항상 동일 할지라도? O (n) times n times – compski
@ user1186038 매번 평균을 다시 계산한다면 루프의 내부 연산은 O (N)이 될 것이므로 O (N^2)가됩니다. 한 번만 평균을 계산하여 로컬 변수에 저장하고 루프 내부에서 로컬 변수를 검색하면 루프의 내부 연산은 O (1)가되고 따라서 전체 루프는 O (N)이됩니다 –
I 그것을 얻으십시오 =) 그래서 상관없이 코드는 여전히 O (n^2)입니까? 즉 그것은 O (n^2)보다 더 이상 효율적이지 못하다. – compski