Bên ngoài foreach
được thực thi n = | c1
| thời gian (trong đó | x | là kích thước của c1
), trong khi bên trong foreach
được thực thi m = | c2
| lần. Đó là tổng cộng O (n * m) lần.
Tôi sẽ trình bày thuật toán đơn giản với những phức tạp sau đây như thế nào?
Đây là giống như O (n^2). Một cái gì đó mà mất O (n^2) thời gian sẽ được uống một bánh mì nướng với mọi người khác tại một bữa tiệc, giả sử rằng luôn luôn có chính xác hai người trong một bánh mì nướng, và chỉ có một người làm việc nướng tại một thời điểm.
Tương tự như trên; Chữ O (n^2) chiếm ưu thế. Một ví dụ khác của nỗ lực O (n^2) là trồng cây trong một khu vườn hình vuông có chiều dài n
, giả sử phải mất thời gian liên tục để trồng từng cây, và khi bạn trồng một cây khác thì bị loại trừ khỏi vùng lân cận.
Một ví dụ về điều này sẽ được tìm kiếm một từ trong một cuốn từ điển bằng cách liên tục chọn các trung điểm của các khu vực của các trang bạn cần phải tìm kiếm tiếp theo. (Nói cách khác, một tìm kiếm nhị phân.)
Sử dụng các thuật toán trên, nhưng bây giờ bạn phải tìm mỗi từ trong từ điển.
Nguồn
2010-02-01 23:37:58
Đây là một lời giải thích tuyệt vời. Mặc dù là một lớp lót, lời giải thích của bạn về O (n log n) thực sự được nhấp. –