
Nguyên bản được gửi bởi
Wazi Armstrong
- Nhưng xác suất về 1 đề break trong vòng lặp là khá cao với những dãy nhiều số.
Với những dãy ít số thì thời gian chênh nhau không đáng kể
- Trong khi cách đó lại đơn giản hơn về coding, nghĩ phát có thể viết ngay được, không như phân tích ra thừa số nguyên tố còn phải nghĩ đến việc tổ chức bộ nhớ, rồi đến việc lấy số mũ nhỏ nhất của các thừa số nguyên tố trong loạt các mảng 28 phần tử kia nữa (nếu đầu vào có long thì chưa biết thế nào)
- Vấn đề thứ 3, để chọn một hướng giải quyết vđ tốt, độ phức tạp của thuật toán chỉ là 1 yếu tố, nó có ý nghĩa cho những bài toán có đầu vào lớn. Tuy bài của bạn có độ phức tạp thuật toán là O(n^1/2) nhưng xét những công đoạn nó làm thì đầu tiên phải tách mỗi số trong dãy cho vào một mảng 28 phần tử. Thứ 2, duyệt từ đầu mảng đến cuối mảng, với mỗi vòng lặp thì lại duyệt qua các mảng tại ví trí đó trên mỗi mảng để tìm phần tử có số mũ nhỏ nhất... Bạn nghĩ rằng 2 vòng for lồng nhau mỗi vòng lặp n với 1 triệu lệnh tuần tự cái nào chạy nhanh hơn với đầu vào n nhỏ hơn 1000? Ngoài việc đánh giá độ phức tạp còn nên để ý cả độ lớn của dữ liệu đầu vào nữa, cũng như xác suất xảy ra các trường hợp tốt nhất, tệ nhất...