アルゴリズムの時間複雑度の分類
881 ワード
1.アルゴリズムの時間複雑さは主に以下の種類がある.
1.1 0(1)
定数時間内のアルゴリズムを指します.たとえば:
1.2 0(log n)0(n logn)
サンプルコード:
1.3 O(m+n)、O(m*n)
一般的には二つの不定パラメータがあり、二つの不定パラメータはそのサイズを決定できません.
実は、O(n 2)はO(m*n)のいずれも不定パラメータであると理解できます.
1.5 O(2^n)
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 ++;
}