概念:スペースの複雑さは数学関数式であり、アルゴリズムの操作中に一時的に占有されるストレージスペースの量の尺度です。
スペースの複雑さは、変数の数によって計算されます。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)です。
理由:スペースは何度も再利用できますが、時間は再利用できません。
スペースが再利用された後、それは一度再利用することができます。