Sari la conținut
Academia PythonAcademiaPython

1.3 Eficiența unui algoritm — noțiuni de bază

Concept nou și exemplu

Da, contează. Un algoritm poate fi corect, dar lent sau consumator de memorie. Eficiența unui algoritm se măsoară din două puncte de vedere:

  • Timp — câte operații face algoritmul până termină.
  • Memorie — câte date reține algoritmul în timpul execuției.

Pentru a compara eficiența „la modul general" (nu doar pe un exemplu mic), informaticienii folosesc notația O (spus „O mare"), care arată cum crește timpul de execuție atunci când datele de intrare cresc. Nu intrăm în detalii matematice acum — reține doar ideea: un algoritm „O(n)" devine de două ori mai lent dacă dublezi datele, unul „O(n²)" devine de patru ori mai lent.

Exemplu — verificăm dacă un număr e prim, în două variante:

python.py
# Varianta 1: verificăm toți divizorii posibili, până la n-1 (mai lent)
n = 29
prim = True
for i in range(2, n):
if n % i == 0:
prim = False
print(prim)
python.py
# Varianta 2: e suficient să verificăm până la radical din n (mult mai rapid pentru n mare)
import math
n = 29
prim = True
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
prim = False
print(prim)

Ambele dau același rezultat corect, dar pentru un număr foarte mare (ex. un milion), varianta 2 termină aproape instant, iar varianta 1 durează vizibil mai mult.

Ce reții despre eficiență

Nu e nevoie să știi acum notația O matematică. Ideea importantă: pentru aceeași problemă, un algoritm mai inteligent termină mai repede și folosește mai puțină memorie. Când ai două soluții care dau același rezultat, alege-o pe cea care face mai puțini pași.