アルゴリズムの時間複雑度の分類


1.アルゴリズムの時間複雑さは主に以下の種類がある.
1.1 0(1)
定数時間内のアルゴリズムを指します.たとえば:
 int i = 8;
 int j = 6;
 int sum = i + j;
一回または定数の時間数を実行するコードは、時間の複雑さが0(1)です.
1.2 0(log n)0(n logn)
サンプルコード:
 i=1;
 while (i <= n)  {
   i = i * 2;
 }
上記のコードの時間複雑度はo(log n)というような時間複雑度は取りにくいです.ただし、操作回数をパラメータとして算出することで、操作回数を算出することができます.
1.3 O(m+n)、O(m*n)
一般的には二つの不定パラメータがあり、二つの不定パラメータはそのサイズを決定できません.
int cal(int m, int n) {
  int sum_1 = 0;
  int i = 1;
  for (; i < m; ++i) {
    sum_1 = sum_1 + i;
  }

  int sum_2 = 0;
  int j = 1;
  for (; j < n; ++j) {
    sum_2 = sum_2 + j;
  }

  return sum_1 + sum_2;
}
1.4 O(n 2)
実は、O(n 2)はO(m*n)のいずれも不定パラメータであると理解できます.
1.5 O(2^n)
 i=1;
 while (i <= 2^n)  {
   i ++;
 }
1.6 O(n!)
 i=1;
 while (i <= n!)  {
   i ++;
 }