Computer >> Máy Tính >  >> Lập trình >> lập trình C

Một câu đố vòng lặp lồng nhau?

Trong phần này, chúng ta sẽ thấy một vấn đề thú vị. Chúng ta sẽ thấy hai đoạn mã. Cả hai đều có hai vòng lặp lồng nhau. Chúng ta phải xác định cái nào sẽ chạy nhanh hơn. (Chúng tôi sẽ cho rằng trình biên dịch không tối ưu hóa mã).

Phân đoạn 1

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

Phân đoạn 2

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

Cả hai mã sẽ chạy cùng một số lần. Mã bên trong hai vòng lặp sẽ thực thi 10000 lần trong cả hai trường hợp. Nhưng nếu chúng ta xem xét cẩn thận, chúng ta có thể hiểu rằng đoạn mã thứ hai đang thực hiện nhiều nhiệm vụ hơn đoạn mã đầu tiên. Trong đoạn mã đầu tiên, vòng lặp bên trong sẽ được thực hiện 10 lần. Vì vậy, để khởi tạo, kiểm tra điều kiện và hoạt động tăng sẽ được thực hiện 10 lần. Nhưng đối với mã thứ hai, vòng lặp bên trong sẽ được thực hiện 100 lần. Vì vậy, việc khởi tạo, kiểm tra điều kiện và hoạt động tăng sẽ được thực hiện 100 lần. Vì vậy sẽ mất nhiều thời gian hơn so với lần đầu tiên.