時間計算量と空間計算量を理解する前に、まずアルゴリズム効率を理解する必要があります。アルゴリズム効率は、時間計算量とも呼ばれる時間効率と、空間計算量とも呼ばれる空間効率の2つのタイプに分けられます。
明らかに、時間計算量はアルゴリズムにかかる時間、つまり実行速度を測定し、空間計算量はアルゴリズムに必要なスペースを測定します。これら2つのタイプの複雑さは両方とも、BigOのプログレッシブ表現で表されます。コンピュータの発達に伴い、コンピュータの記憶容量は非常に高いレベルに達しました。現在、アルゴリズムの時間計算量は基本的に考慮されており、空間計算量は特別な注意を必要とする問題ではなくなりました。
このセクションで要約したマインドマップを作成しました↓
時間計算量
計算時間計算量は、主にアルゴリズムの基本操作の実行数を計算するためのもので、ビッグOの累進表記を使用して、次のコードを例として計算します。複雑
void Func1(int N)
{
int count = 0;
for(int i = 0 ; i<N ; ++i)
{
for(int j = 0; j<N ;++j )
{
++count;
}
}
for(int k = 0; k<2*N ;++k)
{
++count;
}
int M = 10;
while(M--)
{
++count;
}
printf("%d",count);
}
1.まず、Func1の基本操作が実行された回数を計算します
F(N)= N ^ 2 + 2 * N + 10
- N = 10 F(N)= 130
- N = 100 F(N)= 10210
- N = 1000 F(N)= 1002010
2.
ビッグOのプログレッシブ表記を使用する:ビッグO表記、関数のプログレッシブ動作を説明するために使用される数学表記。
ビッグOプログレッシブ表記の規則は次のとおりです。
- 実行時間内のすべての加法定数項を定数1に置き換えます
- 変更されたランニングカウント機能では、最上位のアイテムのみが保持されます。
- 最上位項の定数が1でない場合は、この定数を削除します
ルールによれば、結果Func1の時間計算量はO(N ^ 2)です。
スペースの複雑さスペースの複雑さの
主な記憶は、プログラムが占めるスペースの量ではなく、変数の数を計算することなので、例を挙げません。
2つの違い
- 時間計算量は累積計算です
- スペースの複雑さは再利用です