Toți algoritmii informatici sunt caracterizați de o complexitate. Aceasta poate fi de 2 tipuri: Complexitatea de timp si Complexitatea de spațiu. Este foarte important sa cunoaștem complexitățile algoritmilor noștri deoarece în acest mod putem estima timpul in care algoritmul va duce la bun sfârșit “sarcina” și de asemenea putem estima spațiul (memoria) de care are nevoie programul pentru a putea finaliza sarcina. Complexitatea unui program este in general estimata de programator încă din faza de proiectare și acest lucru este foarte important pentru a afla limitele in care programul funcționează.

Pentru a rezolva corect o problemă de informatica, este extrem de important ca complexitatea algoritmilor pe care îi proiectăm sa se încadreze in limitele impuse de problemă.