以下の二つの側面から、アルゴリズムの効率:
- 時間効率:それは、アルゴリズムのにかかる時間を指し、
- スペース効率は:ストレージスペースでアルゴリズムを実行にかかったプロセスを指し
時間効率とスペース効率は時々矛盾しています。
ここでは、唯一の事前分析を議論し、また、事後解析手法ので客観的条件など、他のコンピュータのハードウェアとソフトウェアと。
前分析
アルゴリズムの実行時間は、実質的に実行するようにコンピュータに等しい簡単な操作(等、移動、比較そのような割り当てなどの)アルゴリズムを実行するのに必要な時間は、単純な製品番号です。
マトリックス、例えば:
for(i=1;i<=n;i++) //n+1次
for(j=1;j<=n;j++) //n*(n+1)次
{
c[i][j]=0; //n*n次
for(k=0;k<=n;k++) //n*n*(n+1)次
c[i][j]=c[i][j]+a[i][k]*b[k][j];//n*n*n次
}
次いで、上記のアルゴリズムによって消費される時間は、(N)= 2Nアルゴリズムの実行時間各ステートメント和が、時間Tを消費することである。3 + 3Nと2 + 2N + 1。
アルゴリズムの異なる時間効率の比較を容易にするために、我々は彼らの大きさを比較します。
- nが無限大に近づくと、T(N)/ F(ように、補助関数f(N)(すなわち、最高の大きさの機能のみを含有する)、もし n)が限界値であるが、ゼロの定数に等しくない(Fと呼ばれます、 n)とT(n)が同程度の関数です。で表さT(N)= O(F(N))、O(F(N))の時間計算量であることを特徴とします。
分析アルゴリズムの時間計算量:
- 見つける文が最大周波数である基本的な文として(つまり、実行アルゴリズムの最大数である)文のこと
- 計算基本的なステートメント関数fの結果として生じる問題のサイズnの周波数の(N)
- どちらの記号Oによって表される最高の大きさであり、
時間の複雑さは、ネストされた最も深い文の周波数によって決定されます。
例:
void exam(float x[][],int m,int n)
{
float sum[];
for(int i=0;i<m;i++)
{
sum[i]=0.0;
for(int j=0;j<n;j++)
sum[i]+=x[i][j];//嵌套最深层
}
例:
i=1;
while(i<=n)
i=i*2;
実行回数を設定するX
2 X <= N-
X <=ログイン2 N-
の最大数を実行ログ2 T(N)= O(ログ、N- 2 N-)