InformaticăliceuClasa 11mediu
Complexitatea Algoritmilor - Big O
Ce înseamnă O(n), O(n²), O(log n)? Cum să analizezi eficiența algoritmilor.
circa 1 lună în urmă
0 vizualizări
35 minute
Complexitatea Algoritmilor - Big O
Ce este Complexitatea?
Complexitatea măsoară cât de eficient este un algoritm în funcție de dimensiunea input-ului.
Notația Big O
Exprimă comportamentul asimptotic (pentru input mare).
Complexități Comune
| Notație | Nume | Exemplu |
|---|---|---|
| O(1) | Constantă | Acces element array |
| O(log n) | Logaritmică | Căutare binară |
| O(n) | Liniară | Parcurgere array |
| O(n log n) | Liniară-logaritmică | Merge sort, Quick sort |
| O(n²) | Pătratică | Bubble sort, 2 for-uri |
| O(2ⁿ) | Exponențială | Fibonacci naiv, backtracking |
Exemple
O(1) - Constantă
1int acces(int v[], int i) { 2 return v[i]; // O(1) 3}
O(n) - Liniară
1int suma(int v[], int n) { 2 int s = 0; 3 for (int i = 0; i < n; i++) // O(n) 4 s += v[i]; 5 return s; 6}
O(n²) - Pătratică
1void bubble(int v[], int n) { 2 for (int i = 0; i < n; i++) // O(n) 3 for (int j = 0; j < n-1; j++) // O(n) 4 // ... // Total: O(n²) 5}
O(log n) - Logaritmică
1int cautareBinara(int v[], int n, int x) { 2 int st = 0, dr = n-1; 3 while (st <= dr) { // O(log n) 4 int mij = (st + dr) / 2; 5 if (v[mij] == x) return mij; 6 if (v[mij] < x) st = mij + 1; 7 else dr = mij - 1; 8 } 9 return -1; 10}
Reguli de Calcul
- •Ignoră constantele: O(2n) = O(n)
- •Păstrează termenul dominant: O(n² + n) = O(n²)
- •Buclele nested se înmulțesc
- •Buclele secvențiale se adună
Exerciții
- •Ce complexitate are căutarea secvențială?
- •Compară O(n log n) cu O(n²) pentru n = 1000
- •Analizează complexitatea merge sort
Găsește un profesor de informatică pentru algoritmi avansați!
Tutorialul te-a ajutat?
Dacă ai nevoie de ajutor personalizat, găsește un profesor calificat pentru meditații
