죄송합니다시간 복잡도
for (int i=0; i<n; i++) {
for (int j=0; j<i; j++) {
do stuff...
}
}
은이 코드 n^2
또는 nlogn
의 복잡도입니까? 감사합니다.
죄송합니다시간 복잡도
for (int i=0; i<n; i++) {
for (int j=0; j<i; j++) {
do stuff...
}
}
은이 코드 n^2
또는 nlogn
의 복잡도입니까? 감사합니다.
복잡도는 O(n^2)
입니다.
외부 루프의 첫 번째 반복에서, 내부 루프는 외부 루프의 두 번째 반복에서 0
회
을 반복하는 것, 내부 루프 1
회 반복한다.
외부 루프의 세 번째 반복에서 내부 루프는 2
번을 반복합니다.
외부 루프의 n
번째 반복에서, 내부 루프 n - 1
회 반복한다.
반복의 총 수 = 0 + 1 + 2 + 3 + 4 ...... + (n - 1)
우리가 알고있는, 산술 시리즈
1 + 2 + 3 + ..... + (n - 2) + (n - 1) + n = (n * (n + 1))/2
그래서,
0 + 1 + 2 + 3 + 4 ...... + (n - 1)
= (n * (n - 1))/2
~ n^2
이 일정 시간에 실행됩니다 do stuff
단계를 고려의 합, 전체 시간 복잡도는 O(n^2)
입니다.
왜 2로 나눈거야? – Adjit
업데이트 확인 –
중첩 루프의 Big-O는 무엇입니까? 내부 루프의 반복 횟수는 외부 루프의 현재 반복 횟수로 결정됩니까?] (http://stackoverflow.com/questions/362059)/what-is-the-big-o-of-a-nested-loop-number-of-in-the-inner-loop의 수) – Liam
직접 코드 변형을 중지하십시오. 나는 이것을 지금 3 번 굴려 야했다. – Liam