My Computer Science II final이 내일입니다. 코드 세그먼트에 Big-Oh를 찾는 방법을 이해하는 데 도움이 필요합니다. 나는 인터넷을 수색했는데 어떻게 이해해야하는지 예를 찾을 수 없었다. 우리는 알고리즘의 순서 (빅 - 오)를 찾기 위해 해야하는코드 세그먼트의 Big-Oh를 찾는 방법을 이해하는 데 도움이 필요합니다.
for(int pass = 1; i <= n; pass++)
{
for(int index = 0; index < n; index++)
for(int count = 1; count < n; count++)
{
//O(1) things here.
}
}
}
:
여기에 최종 우리의 샘플에서 문제입니다.
여기이 될 것이다 O (N^3)을 생각하고, 내가 제대로하고있어 경우에 그냥 모르겠어요 결론
for(int pass = 1; i <= n; pass++) // Evaluates n times
{
for(int index = 0; index < n; index++) // Evaluates n * (n+1) times
for(int count = 1; count < n; count++) // Evaluates n * n * (n) times
{
//O(1) things here.
}
}
}
// T(n) = (n) + (n^2 + n) + n^3
// T(n) = n^3 + n^2 + 2n
// T(n) <= c*f(x)
// n^3 + n^2 + 2n <= c * (n^3)
// O(n) = n^3
에 온 방법이다. 누군가 이처럼 코드를 평가하고 /하거나 내 대답을 확인하는 방법을 설명 할 수 있습니까?
답안은 정확하지만 각 루프에 대해 계산 한 반복 횟수는 아닙니다. 첫 번째와 두 번째 모두 'n'번 반복하고 th ird는'n - 1' 번을 반복합니다. 물론 그 결과에 영향을주지 않습니다. –
현실 세계 문제를 해결하기 위해 O (n^3) 알고리즘을 사용해야하는 경우에는 상황이 매우 안 좋습니다. – john
@john : 또한 많은 상황과'n'의 양에 따라 다릅니다 :-) – deepmax