Tôi phải phân tích vòng lặp này, trong số những thứ khác và xác định thời gian chạy của nó bằng ký hiệu Big-O.Phân tích Big-O cho vòng lặp
for (int i = 0; i < n; i += 4)
for (int j = 0; j < n; j++)
for (int k = 1; k < j*j; k *= 2)`
Dưới đây là những gì tôi có cho đến nay:
for (int i = 0; i < n; i += 4) = n
for (int j = 0; j < n; j++) = n
for (int k = 1; k < j*j; k *= 2) = log^2 n
Bây giờ vấn đề tôi sắp đến là thời gian chạy cuối cùng của vòng lặp. Đoán tốt nhất của tôi là O (n^2), tuy nhiên tôi không chắc chắn nếu điều này đúng. Có ai giúp được không?
Chỉnh sửa: xin lỗi về Oh -> O điều. sách giáo khoa của tôi sử dụng "Big-Oh"
Vì bạn thực thi tất cả các vòng bên trong cho mỗi lần lặp của các vòng ngoài, nó sẽ là phép nhân đơn giản, tức là O (n * n * log (n)). (Tuy nhiên, không kiểm tra kết quả cá nhân của bạn). – Thomas
Tôi nghĩ rằng vòng thứ ba không phải là 'log^2 n', mà là 'log n^2', là' O (log n) '. –
@Thomas vì vậy bạn vẫn sẽ nhân lên như bình thường, mặc dù có chức năng đăng nhập? JuanLopes bạn nói đúng! cảm ơn. –