Documente Academic
Documente Profesional
Documente Cultură
FCIM, UTM
- complexitate în timp
- complexitate în spațiu
Implică vizitarea fiecărui element din intrare în cel mai rău caz.
Dacă elementul curent este mai mare decât max, se va efectua o atribuire.
Aplicând analiza asimptotică lăsăm cel mai semnificativ termen care este n.
Folosind notația Big O obținem: O(n).
Dacă intrarea are dimensiunea 12, va dura 144 și așa mai departe.
Dacă tabloul va conține 20 elemente atunci counter va fi egal 400 în cel mai rău caz.
Cînd într-o funcție sunt 2 bucle imbricate timpul de execuție va fi pătratic: O(n²),
dar nu tot timpul este așa.
Buclele imbricate(nested loops) sunt concepte programatice constituite
din două sau mai multe bucle plasate una în interiorul celeilalte.
Bucla cea mai din interior este executată de cele mai multe ori, în timp
ce bucla cea mai exterioară, de cele mai puține ori.
- căutarea binară
- găsirea numărului cel mai mare / cel mai mic dintr-un arbore
binar de căutare
n log2n
0 Nu există
1 0
32 5
128 7
512 9
1024 10
16384 14
65536 16
262144 18
1048576 20
4294967296 32
O funcție logaritmică este opusul unei funcții exponențiale.
Când spui că ceva crește exponențial, se înmulțește.
Când ceva crește logaritmic, este împărțit.
Căutare binară (Binary search)
Cazul cel mai rău(defavorabil): O(log n) → elementul este pe prima sau ultima poziție
Acet algoritm împarte intrarea în jumătate de fiecare dată și
se dovedește că log(n) este funcția care se comportă astfel.
Calculul complexității în timp al algoritmului binarySearch nu este la fel de
simplu ca exemplele anterioare. Acest algoritm utilizează recursivitatea.
- metoda Master
- metoda substituției
- metoda arborelui
- metoda Akra–Bazzi
O(n log n) - Timp liniar-logaritmic
Care este cel mai bun mod de a sorta un tablou? Anterior, s-a
propus o soluție folosind sortarea prin interschimbare care are o
complexitate în timp de O(n²)
Timpul de rulare exponențial nu este cel mai rău, sunt algoritmi care se execută
și mai încet.
O(n!) - Timp factorial
Factorialul unui număr întreg pozitiv n este notat cu n! și este egal cu produsul
numerelor naturale mai mici sau egale cu n.
După cum se vede, este de dorit să se evite cît este de posibil algoritmii care au
acest timp de execuție deoarece numărul de operații crește extrem de rapid.
10!
10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 3 628 800