こんにちは、JS2IIUです。
今回は、プログラミングやアルゴリズムの世界で頻繁に登場する「ビッグオー記法(Big-O notation)」について解説します。今回もよろしくお願いします。
ビッグオー記法とは?
ビッグオー記法は、アルゴリズムの実行時間やメモリ使用量が入力サイズ \(n\) に対してどのように増加するかを簡潔に表現するための記法です。例えば、\(O(n)\) や \(O(n^2)\) のように書きます。
- \(O(1)\) : 入力サイズに関係なく一定の時間で終わる(定数時間)
- \(O(n)\) : 入力サイズ \(n\) に比例して時間が増える(線形時間)
- \(O(n^2)\) : 入力サイズの2乗に比例して時間が増える(2次時間)
このように、ビッグオー記法は「最悪の場合の上限」を示すため、アルゴリズムの効率を比較する際に非常に便利です。
具体例
- 配列の全要素を1回ずつ調べる場合:\(O(n)\)
- 二重ループで全てのペアを調べる場合:\(O(n^2)\)
- バイナリサーチ(2分探索):\(O(\log n)\)
なぜ重要なのか?
アルゴリズムの計算量が大きいと、入力サイズが少し増えただけで実行時間が急激に長くなります。効率的なアルゴリズムを選ぶことで、現実的な時間で処理できるかどうかが決まります。
ビッグオー以外の記法
- \(\Omega(n)\) : 最良の場合の下限
- \(\Theta(n)\) : 上限・下限ともに \(n\) で挟まれる(厳密なオーダー)
まとめ
ビッグオー記法は、アルゴリズムの効率を評価・比較するための基本的な道具です。プログラムを書く際や、他人のコードを読む際にも、計算量を意識することでより良い設計ができるようになります。
最後まで読んでいただきありがとうございます。

