Thuật ngữ nào tôi có thể sử dụng để mô tả một cái gì đó với độ phức tạp O (N log N)?
Ví dụ:
O (1): Không đổi
O (log N): logarit
O (N): Tuyến tính
O (N log N): ??????
O (N 2 ): bậc hai
O (N 3 ): Hình khối
Thuật ngữ nào tôi có thể sử dụng để mô tả một cái gì đó với độ phức tạp O (N log N)?
Ví dụ:
O (1): Không đổi
O (log N): logarit
O (N): Tuyến tính
O (N log N): ??????
O (N 2 ): bậc hai
O (N 3 ): Hình khối
Câu trả lời:
"N log N" tốt như bạn sẽ nhận được, và nên được các lập trình viên chuyên nghiệp hiểu rõ. Bạn không thể mong đợi có một từ duy nhất để mô tả mọi lớp phức tạp tồn tại.
Có một thuật ngữ thuật ngữ tuyến tính có nghĩa chính xác điều này.
Tôi không tin rằng tất cả các lập trình viên đều hiểu nó, vì vậy nếu bạn không cẩn thận thì nó sẽ che khuất nhiều hơn những gì nó thông báo. Cá nhân tôi thường không sử dụng nó, và nếu tôi đã làm thì có lẽ tôi sẽ định nghĩa nó trong lần sử dụng đầu tiên, ví dụ "bài viết này xem xét các O(N log N)
thuật toán linearithmic ( )".
Đôi khi nó được gọi là "loglinear", mặc dù từ đó thực sự có nghĩa khác. Tuy nhiên, tôi sẽ chỉ sử dụng "N log N", như câu trả lời của @ Philip cho thấy.
O(n · f(n))
ở đâuf(n) << n
. Nhưng điều này cũng phù hợp với những thứ nhưO(n · log log n)
vàO(n α(n))
nơiα(n)
là nghịch đảo của chức năng Ackermann.