코드가 O (N) 시간 (선형 시간?) 또는 O (N^2) 시간 또는 다른 것에서 실행되는지 어떻게 알 수 있습니까? 연습은 오랫동안 계산 시간이 오래 걸리는 코드에 대한 온라인 도킹 포인트를 테스트합니다.Python Script : O (N) 또는 O (N^2) 시간을 확인하는 방법은 무엇입니까?
실행하는 데 걸리는 시간이 입력 데이터 길이 (O (N) 시간)에 비례하는 스크립트를 사용하는 것이 가장 좋음을 알고 있으며 이것이 내 코드인지 확인합니다. 하기. 그러면 코드가 얼마나 빨리 실행되는지 알 수 있습니까?
아래에는 내가 염려하는 스크립트가 포함되어 있습니다. 그것은 일련의 'a와 b'가 주어진 연습 시험 문제에서 나왔고 당신은 회문을 계산합니다. 따라서 s = "baababa"를 주면 'aa', 'baab', 'aba', 'bab', 'ababa', & 'aba'의 여섯 가지 문장이 있습니다.
def palindrome(s):
length = len(s)
last = len(s)-1
count = 0
for index, i in enumerate(s):
left=1
right=1
left2=1
right2=1
for j in range(0,index+1): #+1 because exclusive
if index-left2+1>=0 and index+right2<=last and s[index-left2+1]==s[index+right2]:
print s[index-left2+1:index+right2+1] #+1 because exclusive
left2 +=1
right2 +=1
count +=1
elif index-left>=0 and index+right<=last and s[index-left] == s[index+right]:
print s[index-left:index+right+1] #+1 because exclusive
left += 1
right +=1
count += 1
return count
이 O (N) 시간입니까? 전체 목록을 한 번만 반복하지만 더 작은 루프도 있습니다 ...
죄송합니다, Roman, 그래프가 잘 모르겠습니다. 간단한 설명을 제공해 주시겠습니까? –
대답이 조금 바뀌 었습니다. 충분하지 않다면 나중에 더 자세히 설명하려고합니다. –
감사합니다. 지금 많은 의미가 있습니다! –