2011-07-21 49 views

Trả lời

14

Trên thực tế nó là:

  • Vòng lặp i lặp lại O (N) lần, vì vậy giá trị của i là O (N), vì vậy chúng ta có thể nói O (I) = O (N).
  • Vòng lặp j lặp lại O (I^2) = O (N^2) lần (khi được xem xét riêng, không có vòng ngoài).
  • Vòng lặp k lặp lại O (I * J) = O (N * N^2) = O (N^3) lần.
  • Vòng lặp l chỉ lặp lại 10 lần sao cho O (1).

Các vòng lặp được lồng nhau vì vậy chúng tôi phải nhân chúng lại với nhau (bạn có hiểu tại sao không?). Tổng là O (N) * O (N^2) * O (N^3) = O (N^6).

+0

Ok, vì vậy kết quả cuối cùng đạt được thông qua phép nhân các đánh giá của mỗi vòng lặp, và không thông qua một tổng (như @Pascal gợi ý). Người khác có thể xác nhận điều này không? – karlphillip

+2

Pascal đã không thực sự làm tổng. Anh nhân với n * n^2 * n^2 * n và nhận n^6. Nó có thể trông giống như một tổng bởi vì các số mũ cộng với nhau nhưng đó chỉ là cách số mũ làm việc trong toán học. –

+0

Những upvotes được xác nhận = D –

-1

tôi sẽ nói:

  • n cho vòng lặp đầu tiên
  • n ² cho vòng lặp thứ hai => tổng cộng n³
  • n ² cho vòng lặp thứ ba => tổng cộng n⁵
  • chưa khác n-loop => tổng cộng n⁶
+0

Bất kỳ ai đã bỏ phiếu, hãy giải thích lý do. – karlphillip

+4

Tôi đã không downvote, nhưng tôi không thấy làm thế nào các vòng trong cùng có thể được O (n) khi nó thực hiện trong thời gian không đổi, bất kể giá trị của n. – antinome

+0

Vâng, điều này có vẻ như O (N^5) với tôi – bdares

1

Đó là

n cho là người đầu tiên vòng n ² cho phần thứ hai vòng lặp n³ cho vòng lặp thứ ba

Các vòng lặp bên trong là O (1)

Tổng là O (n⁶).

Lý do vòng thứ ba là n³ là vì khi bạn nghĩ về nó j đạt n² và tôi đạt đến n, vì vậy i * j đạt đến n³.

Các vấn đề liên quan