TL

計算量と Big-O 記法

データ量が増えたとき、処理時間が“どれくらいの勢いで”増えるかを表す物差し。アルゴリズムの良し悪しを規模で比べられる。

中級アルゴリズム計算量Big-O最終更新: 2026-06-04
TL;DR要点だけ先に
  • 1.Big-O は データ量 n が増えたときの処理時間の“伸び方”を表す物差し(定数や係数は無視)。
  • 2.速い順のイメージ:O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ)。
  • 3.見るのは基本「最悪計算時間」。n が小さいうちは差が出にくいが、大きくなると桁違いになる。

なぜ秒数で測らない?

実行時間はCPUや言語で変わります。Big-O は 係数や定数を無視 し、「n が2倍になったら時間は何倍になる?」というスケールの仕方だけを見ます。O(2n+100)O(n) と書くのはこのためです。

主要なオーダー

記法呼び方代表例
O(1)定数時間配列の添字アクセス、ハッシュの参照
O(log n)対数時間二分探索、平衡二分木の探索
O(n)線形時間配列を1周(線形探索)
O(n log n)準線形高速なソート(マージ/クイック/ヒープ)
O(n²)二乗時間二重ループ(バブルソート、総当たり比較)
O(2ⁿ)指数時間素朴な部分集合の全探索、ナイーブな再帰フィボナッチ
“ループの入れ子”が目安

ざっくり、ループ1段で O(n)、二重ループで O(n²)。半分ずつ絞るなら O(log n)。「データを一巡」か「分割統治」か「総当たり」かで当たりをつけられます。

n が大きいと“桁違い”になる

n=10 なら O(n²)=100、O(n)=10 で大した差ではありません。しかし n=1,000,000 だと、O(n)=百万、O(n²)=一兆。現実的に終わるか終わらないかの差になります。

n が小さいなら凝らなくていい

逆に、扱う件数が常に小さい(数十件など)なら、O(n²) でも一瞬です。“速い”アルゴリズムは実装が複雑になりがち。まず素直に書き、ボトルネックになってから最適化するのが定石。早すぎる最適化は避けます。

最悪・平均・最良

Big-O は通常 最悪計算時間(worst case) を指します。例えば線形探索は、

  • 最良: 先頭で見つかる → O(1)
  • 最悪: 末尾、または無い → O(n)

設計では「最悪でも耐えられるか」で見るのが基本です。

時間だけでなく空間も

同じ考え方で 空間計算量(使うメモリの増え方)も測ります。時間を速くするためにメモリを多く使う(メモ化・索引)など、時間と空間はトレードオフになることが多いです。

例:線形探索 vs 二分探索

ソート済み配列から目的の値を探す(n=1,000,000)

線形探索  O(n)      → 最悪 約1,000,000 回の比較
二分探索  O(log n)  → 最悪 約20 回の比較(毎回半分に絞る)

ただし二分探索は 事前にソートが必要(ソート自体は O(n log n))。「1回しか探さない」なら線形でも十分、「何度も探す」ならソートしてから二分探索、という使用回数を含めた判断が要ります。

プログラミング Article

計算量と Big-O 記法を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

アルゴリズム

比較で見る軸

難易度: intermediate / カテゴリ: プログラミング / タグ数: 3

導入後に効く点

速い順のイメージ:O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ)。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
intermediate
カテゴリ
プログラミング
タグ数
3

判断チェックリスト

  • 自社の用途が「アルゴリズム / 計算量」に近いか確認する。
  • 強みである「Big-O は データ量 n が増えたときの処理時間の“伸び方”を表す物差し(定数や係数は無視)。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

アルゴリズム計算量Big-Oアルゴリズム計算量Big-O
参考: 公式情報