分析空間の複雑さ

概念:スペースの複雑さは数学関数式であり、アルゴリズムの操作中に一時的に占有されるストレージスペースの量の尺度です。

スペースの複雑さは、変数の数によって計算されます。Big -O漸近解析を使用できます

注:関数の実行に必要なスタックスペース(ストレージパラメーター、ローカル変数、一部のレジスタ情報など)

コンパイル時に決定されるため、スペースの複雑さは、主に実行時の関数表示アプリケーションの2番目の外部スペースによって決定されます。

栗を取る:

int fun(int* arr, int len)
{
	int* tmp = (int*)malloc(sizeof(int) * len);
	//***
	return x;
}

スペースの複雑さはO(N)です

mallocスペースを使用する場合、lenのサイズは不明であるため、最悪のケースであるO(N)を検討してください。

lenがカスタム10の場合、スペースの複雑さはO(1)です。

通常の状況では、線形変化はO(N)であり、定数はO(1)です。

また、スペースの複雑さは通常、O(N)またはO(1)のいずれかです。

int fun(size_t n)
{
	if (n < 3)
		return 1;
	return fun(n - 1) + fib(n - 2);
}

この再帰の時間計算量はO(2 ^ N)であり、空間計算量はO(N)です。

理由:スペースは何度も再利用できますが、時間は再利用できません。

スペースが再利用された後、それは一度再利用することができます。

おすすめ

転載: blog.csdn.net/weixin_61932507/article/details/123455597
おすすめ