2013-02-24 34 views
6

tôi muốn để tính toán mức độ phức tạp của theta lồng nhau này cho vòng lặp:phân tích tiệm cận của ba lồng cho vòng

for (int i = 0; i < n; i++) { 
     for (int j = 0; j < i; j++) { 
      for (int k = 0; k < j; k++) { 
       // statement 

tôi muốn nói đó là n^3, nhưng tôi không nghĩ rằng điều này là đúng, bởi vì mỗi vòng lặp không đi từ 1 đến n. Tôi đã làm một số xét nghiệm:

n = 5 -> 10

10 -> 120

30 -> 4060

50 -> 19600

Vì vậy, nó phải nằm giữa n^2 và n^3. Tôi đã thử công thức tổng kết và như vậy, nhưng kết quả của tôi là quá cao. Mặc dù n^2 log (n), nhưng điều đó cũng sai ...

Trả lời

3

Đó là O(N^3). Công thức chính xác là (N*(N+1)*(N+2))/6

+1

Bạn có phiền giải thích như thế nào để có được điều này? – Aaron

+0

@Aaron Tôi hỏi Wolfram Alpha (xem liên kết trong câu trả lời), rất tốt ở những loại tính toán này. – dasblinkenlight

+0

Vâng, tôi đã thấy điều đó, nhưng tôi muốn hiểu tại sao lại là công thức đó. – Aaron

4

Sử dụng Sigma Notation là một bước hiệu quả bằng phương pháp bước:

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