for
루프의 시간 복잡도는 O (N^2)입니다.
방금 codereview.stackexchange.com과 비슷한 질문에 답했습니다.
다음은 루프의 복잡도를 보여주는 간단한 프로그램입니다.
#include <iostream>
using namespace std;
int main()
{
const int N = 10;
int numTotalOps = 0;
for (int i = 0; i < N; ++i)
{
size_t numOps = 0;
for (int j=i; j < N; j++)
{
cout << i << "," << j << endl;
++numTotalOps;
++numOps;
}
cout << "\nNumber of operations for i = " << i << ": " << numOps << endl;
}
cout << "\nNumber of total operations: " << numTotalOps << endl;
return 0;
}
출력 :
0,0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
Number of operations for i = 0: 10
1,1
1,2
1,3
1,4
1,5
1,6
1,7
1,8
1,9
Number of operations for i = 1: 9
2,2
2,3
2,4
2,5
2,6
2,7
2,8
2,9
Number of operations for i = 2: 8
3,3
3,4
3,5
3,6
3,7
3,8
3,9
Number of operations for i = 3: 7
4,4
4,5
4,6
4,7
4,8
4,9
Number of operations for i = 4: 6
5,5
5,6
5,7
5,8
5,9
Number of operations for i = 5: 5
6,6
6,7
6,8
6,9
Number of operations for i = 6: 4
7,7
7,8
7,9
Number of operations for i = 7: 3
8,8
8,9
Number of operations for i = 8: 2
9,9
Number of operations for i = 9: 1
Number of total operations: 55
당신의 코드는 아마도 복사 및 붙여 넣기 동안 차단했다. 코드를 보여주기 위해 질문을 편집 해 주시겠습니까? – NicholasM
별도로 찍은 내부 루프는 항상 O (n)입니다. 그리고 O (n)의'n '은 변수'n'과 같지 않습니다. 변수 번호의 표준 이름 일뿐입니다. –
기다려 ... 그게 n + 2와 (n + 1)/2가 어때? 나는 문자 그대로 질문에 대답하는 방법을 모른다. – bobtheboy