そのため、アルゴリズムの計算量を大体で表す。
(データを十分に大きくしたとき、影響が十分に小さい項を除外してもいい。
※この言葉は理解しなくても、大丈夫です。下の説明を読んでみてください。)
例えば、\(n > m\) のときを考える。
足し算(引き算)のときは、値が大きい方のみを採用する。
\(O(n)+O(m) = O(n)\)
\(O(n)-O(m) = O(n)\)
掛け算(割り算)のときは、どちらも採用する。
\(O(n) \times O(m) = O(n \times m)\)
\(O(n) \div O(m) = O(\frac{n}{m})\)
上に書いたように、プログラムの計算量がデータによって、どのように変化するかを大まかに表すことができればよいので、基本的には、代入式などではなく、繰り返し文のことを考える。
(数学関数などもオーダーで表されることはある。)
もう少し具体的な例は、次の通り。
for (int i = 0; i < n; i++)↑\(O(n)\)
for (int i = 10; i < n; i++)↑\(O(n)\)
for (int i = 0; i < n / 2; i++)↑\(O(\frac{n}{2})\)
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
}
}↑\(O(n \times n) = O(n^{2})\)※実際には、\(O(n \times m)\)は、\(O(n \cdot m)\)や\(O(nm)\)と表記することもあります。(表記揺れの範囲内なので、気にしなくて大丈夫です)