web-dev-qa-db-ja.com

話すときに、アルゴリズムの時間複雑度の順序がO(N log N)であるとどうすればわかりますか?

O(N log N)の複雑さを持つ何かを説明するためにどの用語を使用できますか?

例えば:

  • O(1):定数

  • O(log N):対数

  • O(N):線形

  • O(NログN):??????

  • オン2):2次

  • オン):キュービック

22
matiascelasco

「N log N」はあなたが手に入れるのと同じくらい良いものであり、プロのプログラマーによって十分に理解されるべきです。存在するすべての複雑性クラスを説明する単一のWordがあるとは期待できません。

60
Philip Kendall

専門用語 linearithmic があり、まさにこれを意味します。

私はそれがすべてのプログラマーに広く理解されているとは思わないので、注意しないと、通知した以上に不明瞭になります。個人的には通常は使用しません。使用した場合は、たとえば「この記事では線形(O(N log N))アルゴリズムを考慮します」のように、最初の使用時に定義することになります。

50
Steve Jessop

Wordは実際には別の意味を持っていますが、「対数線形」と呼ばれることもあります。 @ Philip's answer が示唆するように、私は "N log N"に固執します。

13
Jörg W Mittag

係数_log n_の成長が遅いため、O(n log n)の定性的記述は「ほぼ線形」になります。聴衆によっては、O(n log n)アルゴリズムのクラスがよく知られている場合があります。たとえば、これは、比較によってnアイテムを高速にソートする場合です。

2
hardmath