2017-02-01 5 views
-5
int i; 
    for(i=0;i<n;i++) 
    { 
    if(i==number); 
     break; 
    } 

또는어떤 "for"루프가 더 나은 시간 복잡성을 갖고 있습니까?

for(i=0; ;i++) 
    { 
    if(i==number) 
    break; 
    } 

루프 효과에 대한 시간 복잡도의 비교 부분을 제거하거나하지 않습니다?

당신은 빠르고 정확하다 말할 수 없다
+1

첫 번째 것은'O (n)'입니다. 두 번째 것은'O (max (number))'입니다. –

+0

break 문이 있기 때문에 i == number 일 때 종료됩니다. 그리고 그 안에 실제로 "숫자"를 가질 어레이를위한 것입니다. –

+0

감사합니다. 유진 씨. 어떻게 설명해 주시겠습니까? –

답변

1

...

첫 번째의 시간 복잡도는 O(min(n, number))이고 두 번째는 O(number)입니다.


n이 number보다 크거나 같으면 첫 번째 값은 두 번째 값과 같습니다.

  • 제 : O(number) (숫자가 N보다 작로 min(n, number) = number
  • 초 : O(number)

n은 수보다 적은 경우에도 정지, 제는 (빠르다 n).

  • 첫 번째 : O(n) (n은 n보다 작음). 암갈색, min(n, number) = n
  • 초 : 전체 뷰 O(number)

는 제가 빠를 것이다.

위에서 볼 수 있듯이 for 비교 내부의 비교를 제거하면 두 번째 경우의 복잡도가 달라졌을 때 분명합니다.

+0

감사합니다. Daniel, 시간이 모두 동일 할 것입니다. 루프 또는? 어떤 차이가 있습니까? 내가 설명한대로 –

+0

, 숫자가 n보다 크면 시간이 달라집니다. 그렇지 않으면 시간 복잡도가 동일합니다. – Daniel