0% au considerat acest document util (0 voturi)
16 vizualizări2 pagini

Tehnici Avansate Raspunsuri

ceva faclulsatate

Încărcat de

suciu.alexcsgo
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
16 vizualizări2 pagini

Tehnici Avansate Raspunsuri

ceva faclulsatate

Încărcat de

suciu.alexcsgo
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

1.

Exemple de trei aplicații ale algoritmilor de sortare


- Sortarea tranzacțiilor bancare după data

În aplicațiile financiare, tranzacțiile bancare trebuie sortate pentru a fi prezentate


cronologic. Se poate folosi un algoritm de sortare precum Merge Sort pentru a menține
stabilitatea și a asigura complexitatea O(n log n). Fără sortare, obținerea tranzacțiilor într-o
anumită ordine ar necesita căutări repetate, ceea ce ar crește complexitatea la O(n^2) în
cazul căutărilor secvențiale.

- Organizarea listelor de produse într-un magazin online după preț

În e-commerce, produsele trebuie sortate rapid după preț pentru a fi prezentate clienților.
Quick Sort este utilizat adesea pentru că are o complexitate medie O(n log n). Fără sortare,
accesul eficient la produsele cu cel mai mic sau cel mai mare preț ar fi mai lent, necesitând o
parcurgere completă a listei (O(n)).

- Sortarea elementelor într-un sistem de operare (de exemplu, procesele după


prioritate)

Sistemele de operare trebuie să sorteze procesele în funcție de prioritate. Heap Sort este
folosit pentru a implementa o coadă de priorități, cu complexitate O(n log n). Fără sortare,
gestionarea priorităților ar necesita căutări repetate, ceea ce ar avea o complexitate ridicată
(O(n^2)).

2. Ordinea de performanță pentru algoritmii de sortare


- Insertion Sort:

- Worst Case: O(n^2), se întâmplă atunci când lista este sortată invers.

- Average Case: O(n^2). Insertion Sort devine eficient pentru liste mici sau aproape sortate
(O(n) în caz favorabil).

- Quick Sort:

- Worst Case: O(n^2), atunci când pivotul ales este cel mai prost (de exemplu, primul sau
ultimul element în cazul unei liste sortate).

- Average Case: O(n log n), dacă se alege un pivot bun și se împarte lista aproximativ în
jumătate.

- Merge Sort:

- Worst Case și Average Case: O(n log n). Acest algoritm are complexitate garantată
datorită împărțirii constante în două și combinării eficiente.
- Heap Sort:

- Worst Case și Average Case: O(n log n), deoarece necesită timp O(log n) pentru a insera
fiecare element și O(n) pentru a construi heap-ul.

Ordinea generală de performanță în funcție de n este:

1. Quick Sort (în medie)

2. Merge Sort

3. Heap Sort

4. Insertion Sort (eficient doar pentru liste foarte mici sau aproape sortate)

3. Diferența între "divide and conquer" și programarea dinamică


- Divide and Conquer este o tehnică în care problema este împărțită în subprobleme
independente, fiecare dintre ele fiind rezolvată recursiv, iar apoi rezultatele sunt combinate.
Exemplu: Merge Sort împarte lista în subliste mai mici, le sortează și le combină pentru a
obține lista sortată.

- Programarea Dinamică este utilizată atunci când subproblemele nu sunt independente, iar
soluțiile subproblemelor sunt reutilizate pentru a evita calculul repetat. Programarea
dinamică folosește o tehnică de memorare (memoizare) sau tabelare pentru a stoca
rezultatele subproblemelor. Exemplu: Problema rucsacului (Knapsack Problem) unde
rezultatele subproblemelor sunt reutilizate pentru a construi soluția optimă.

4. Exemple de utilizare a structurilor de date

- Arbore binar:

- Exemplu: Căutare eficientă de elemente într-un set de date. Utilizarea unui arbore binar
de căutare (BST) permite căutarea, inserarea și ștergerea elementelor în timp O(log n), ceea
ce îmbunătățește semnificativ performanța față de o listă simplă (O(n)).

- Listă tip stivă (stack):

- Exemplu: Algoritmul de parcurgere în adâncime (DFS). Stack-ul este folosit pentru a ține
evidența nodurilor vizitate, oferind un mecanism simplu pentru backtracking în timpul
parcurgerii unui graf.

- Dicționar:

- Exemplu: Contorizarea frecvenței elementelor într-o listă. Un dicționar permite stocarea


perechilor cheie-valoare, astfel încât accesul la fiecare element pentru incrementarea
contorului să fie O(1), ceea ce îmbunătățește eficiența față de o căutare secvențială într-o
listă.

S-ar putea să vă placă și