Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「O(n log(n))のパフォーマンス」の意味がわかるようになろう

Avatar for dhirabayashi dhirabayashi
November 14, 2025

「O(n log(n))のパフォーマンス」の意味がわかるようになろう

JJUG CCC 2025 Fall

Avatar for dhirabayashi

dhirabayashi

November 14, 2025
Tweet

More Decks by dhirabayashi

Other Decks in Technology

Transcript

  1. 18 n log(n)とは • n log(n)はn × log(n)という意味 • log(n)とは

    • 高校数学で習うやつ(計算量の文脈では底は通常2) • 厳密ではないが、nを2で何回割れるかという数とだいたい一致する • つまりlog(n)は元のnよりずっと小さい数になる • O(log(n))の場合、処理時間の増加が非常に緩やかになる • 雑に言えば爆速 • データ量が2倍になっても処理回数が1回増えるだけ • データ量が42億件でも処理回数は32回とかそれくらい
  2. 19 O(n log(n))の処理時間 • O(n log(n))の場合、O(n) × 爆速(O(log n)) •

    O(n)よりは遅いがかなり近い • データ量が増えると差が緩やかに広がる • 少なくともO(n2)よりははるかに速い
  3. 22 「O(n log(n))のパフォーマンス」 • ここまでの説明により「O(n log(n))のパフォーマンス」とは • このアルゴリズムの計算量がO(n log(n))である •

    これはループで配列を全件見るようなO(n)のアルゴリズ ムにかなり近い性能 • 少なくともO(n2)とは比較にならないくらい良い性能
  4. 29 つまりO(n log(n))のパフォーマンスとは • 計算量がO(n log(n))である • O(n)よりは遅い • O(n2)よりは格段に良い性能

    • ソートアルゴリズムとしては一般的かつ最良の計算量である • 一般的なソートがどれくらいの速さかはみんな経験的に知って る…はず