커다란 O 런타임을 실행하기위한 코드가 주어졌습니다. 누군가 내가 올바른 방향에 있는지 아닌지를 말해 줄 수 있습니까?빅 O 표기법 런타임
//program1
int i, count = 0, n = 20000;
for(i = 0; i < n * n; i++)
{
count++;
}
O (n^2)입니까?
//number2
int i, inner_count = 0, n = 2000000000;
for(i = 0; i < n; i++)
{
inner_count++;
}
이 O (n)입니까?
//number3
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
count++;
}
}
O (n^2)?
//number4
for(i = 0; i < n; i++)
{
for(j = 0; j < i; j++)
{
for(k = 0; k < j; k++)
{
inner_count++;
}
}
}
O (n^3)입니까?
//number5
int i, j, inner_count = 0, n = 30000;
for(i = 0; i < n; i++)
{
for(j = 0; j < i; j++)
{
inner_count++;
}
}
O (n^3)입니까?
//number6
int i, j, k, l, pseudo_inner_count = 0, n = 25;
for(i = 0; i < n; i++)
{
for(j = 0; j < i*i; j++)
{
for(k = 0; k < i*j; k++)
{
pseudo_inner_count++;
for(l = 0; l < 10; l++);
}
}
}
매우 혼란 스럽네요 O (n^3) ??
//number7
int i, j, k, pseudo_inner_count = 0, n = 16;
for(i = n; i > 1; i /= 2)
{
for(j = 0; j < n; j++)
{
pseudo_inner_count++;
for(k = 0; k < 50000000; k++);
}
}
O (n)? (나는 점점 더 열심히한다.)
//number8
int i, j, pseudo_inner_count = 0, n = 1073741824;
for(i = n; i > 1; i /= 2)
{
pseudo_inner_count++;
for(j = 0; j < 50000000; j++);
}
O (n^2)?
또 하나의 내가보고 {
int i, wrong_count = 0, n = 200;
for(i = 0; i < square(n); i++)
{
wrong_count++;
}
printf("%d %d\n", wrong_count, square(wrong_count));
return 0;
}
int square(int m)
{
int i, j = 0;
for(i = 0; i < m * m; i++)
{
j++;
}
return j;
}
절대적으로 아무 생각 사람이를 명확히하고 제가 매우 감사하게 될 것입니다 더 잘 이해하는 데 도움 수 있다면이 없다하지 않았다.
물음표를 적게 사용하면 질문 후에 둘 이상을 입력 할 필요가 없습니다. – unwind
은 정의 된 n이있는 모든 프로그램에 대해 임의의 n 또는 정의 된 상수 값으로 간주해야합니까? –
Brandon - 정의되고 정의 된 경우 모두가 O (1) 상수 연산이되기 때문에 임의로 가정합니다. – zellio