O(N log N)の複雑さを持つ何かを説明するためにどの用語を使用できますか?
例えば:
O(1):定数
O(log N):対数
O(N):線形
O(NログN):??????
オン2):2次
オン3):キュービック
「N log N」はあなたが手に入れるのと同じくらい良いものであり、プロのプログラマーによって十分に理解されるべきです。存在するすべての複雑性クラスを説明する単一のWordがあるとは期待できません。
専門用語 linearithmic があり、まさにこれを意味します。
私はそれがすべてのプログラマーに広く理解されているとは思わないので、注意しないと、通知した以上に不明瞭になります。個人的には通常は使用しません。使用した場合は、たとえば「この記事では線形(O(N log N)
)アルゴリズムを考慮します」のように、最初の使用時に定義することになります。
Wordは実際には別の意味を持っていますが、「対数線形」と呼ばれることもあります。 @ Philip's answer が示唆するように、私は "N log N"に固執します。
係数_log n
_の成長が遅いため、O(n log n)
の定性的記述は「ほぼ線形」になります。聴衆によっては、O(n log n)
アルゴリズムのクラスがよく知られている場合があります。たとえば、これは、比較によってn
アイテムを高速にソートする場合です。