Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

중첩 루프 퍼즐?

<시간/>

이 섹션에서 우리는 한 가지 흥미로운 문제를 볼 것입니다. 두 개의 코드 세그먼트가 표시됩니다. 둘 다 두 개의 중첩 루프가 있습니다. 어느 것이 더 빨리 실행될 것인지 식별해야 합니다. (컴파일러가 코드를 최적화하지 않는다고 가정합니다.)

세그먼트 1

for(int i = 0; i < 10; i++){
   for(int j = 0; j<100; j++){
      //code
   }
}

세그먼트 2

for(int i = 0; i < 100; i++){
   for(int j = 0; j<10; j++){
      //code
   }
}

두 코드 모두 동일한 횟수로 실행됩니다. 두 루프 안의 코드는 두 경우 모두 10000번 실행됩니다. 그러나 주의 깊게 살펴보면 두 번째 코드가 첫 번째 코드보다 더 많은 작업을 수행하고 있음을 이해할 수 있습니다. 첫 번째 코드에서 내부 루프는 10번 실행됩니다. 따라서 초기화를 위해 조건 확인 및 증분 연산을 10번 수행합니다. 그러나 두 번째 코드의 경우 내부 루프가 100번 실행됩니다. 따라서 초기화, 조건 확인 및 증분 작업을 100번 수행합니다. 따라서 첫 번째 것보다 시간이 더 오래 걸립니다.