Complexitatea spațiu se exprimă în general identic cu cea de timp sub forma unde reprezintă numărul total de variabile pe care programul nostru le va stoca. nu este exprimat niciodată ca valoare absoluta ci mai mult ca si o sumă de alte variabile care reprezintă dimensiunile datelor de intrare ale programului. Exemplu: reprezintă faptul ca programul nostru va retine variabile unde si sunt dimensiunile datelor de intrare (în general acest exemplu semnifică reținerea a 2 vectori de și, respectiv, elemente).

La examene, din diverse motive nu prea se dă complexitatea de spațiu.

Vezi regulile pentru notația O

Tipuri de complexități

  • se numește complexitate constantă. Se utilizează doar variabile simple.
  • se numește complexitate liniară. Se utilizează un vector cu elemente.
  • sau se numește complexitate pătratică. Se utilizează o matrice cu elemente.
  • se numește complexitate exponențială. Se utilizează pentru memorarea arborilor de intervale (depășește programa de admitere/liceu).

Erori

“Caught fatal signal 11” este în general eroarea semnalată de evaluatorul de probleme in momentul in care complexitatea spațiu este prea mare, adică intenționam să folosim mai multa memorie decât ne este alocată.

Complexitatea de spațiu la nivel de liceu

În general la liceu când avem nevoie să stocăm un număr de valori într-un vector, ne uităm la limitele problemei. Dacă vedem că problema precizează noi declarăm scriem următoarea secvență de cod:

int v[1001], n;
cin >> n;
for(int i=1; i<=n; i++)
	cin >> v[i];

Problema este că, deși noi vom folosi doar primele valori din vector, compilatorul va aloca întotdeauna elemente în memorie. Astfel, noi am avea o complexitate practică constantă, de . Asta face imposibilă analizarea complexității de spațiu. Ulterior, la facultate, vom învăța metode de alocare dinamică a memoriei (nu int v[n] care este nonstandard), iar complexitatea de spațiu va căpăta un sens practic.