「データ構造_初期」の時間と空間の複雑さ

時間計算量と空間計算量を理解する前に、まずアルゴリズム効率を理解する必要があります。アルゴリズム効率は、時間計算量とも呼ばれる時間効率と、空間計算量とも呼ばれる空間効率の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つの違い

  • 時間計算量は累積計算です
  • スペースの複雑さは再利用です

おすすめ

転載: blog.csdn.net/NanlinW/article/details/97787344
おすすめ