O (N log N) karmaşıklığına sahip bir şeyi tanımlamak için hangi terimi kullanabilirim?
Örneğin:
O (1): Sabit
O (log N): Logaritmik
O (N): Doğrusal
O (N log N): ??????
O (N 2 ): Kuadratik
O (N 3 ): Kübik
O (N log N) karmaşıklığına sahip bir şeyi tanımlamak için hangi terimi kullanabilirim?
Örneğin:
O (1): Sabit
O (log N): Logaritmik
O (N): Doğrusal
O (N log N): ??????
O (N 2 ): Kuadratik
O (N 3 ): Kübik
Yanıtlar:
"N log N", alacağınız kadar iyidir ve profesyonel programcılar tarafından iyi anlaşılmalıdır. Var olan her karmaşıklık sınıfını tanımlamak için tek bir kelime olmasını bekleyemezsiniz.
Tam olarak bu anlam ifade eden bir jargon terimi doğrusaldır .
Bunun tüm programcılar tarafından evrensel olarak anlaşıldığına inanmıyorum, bu yüzden eğer dikkatli değilseniz, bildirdiğinden daha fazla gizlenecektir. Şahsen normalde kullanmıyorum ve o zaman yaparsam muhtemelen ilk kullanımda tanımlarım, örneğin "bu makale linearithmic ( O(N log N)
) algoritmalarını dikkate alır ".
Bu kelime aslında farklı bir şey ifade etse de, bazen "loglinear" olarak adlandırılır. @ Philip'in cevabından da anlaşılacağı gibi sadece "N log N" ile bağlı kaldım .
O(n · f(n))
nerede kullanacağımı kastediyorumf(n) << n
. Fakat bu aynı zamanda Ackermann fonksiyonunun tersi gibiO(n · log log n)
veO(n α(n))
durumlarıα(n)
ile eşleşir .