This shows you the differences between two versions of the page.
|
sd-ca:2017:laboratoare:lab-09 [2018/01/12 18:34] cristian.creteanu [Heap-uri] |
sd-ca:2017:laboratoare:lab-09 [2018/02/19 15:32] (current) cosmin_ioan.petrisor |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Lab 9 - ABC și Heap ====== | + | ====== Lab 9 - ABC si Heap ====== |
| - | * Responsabil: [[mailto:cristiancreteanu06@gmail.com | Cristian Crețeanu]] | + | |
| - | * Data ultimei modificări: 12.01.2018 | + | |
| ===== Obiective ===== | ===== Obiective ===== | ||
| Line 173: | Line 172: | ||
| </code> | </code> | ||
| - | =====ABC vs Heap ===== | ||
| - | Deși la prima vedere nu există mari diferențe între cele două structuri de date, ele sunt complet diferite. Se poate observa că ele diferă atât la nivelul implementării (bst:pointeri către fii vs heap:vector), cat și al complexităților operațiilor specifice. Totuși, deși ambele se pot folosi în rare cazuri pentru același scop (fără a fi la fel de eficiente), ele au întrebuințări diferite. | ||
| - | |||
| - | **ABC** | ||
| - | * Se folosește pentru a implementa arbori echilibrați, precum AVL, Red-Black | ||
| - | * Prezintă toate avantajele unui vector sortat, venind în plus cu inserare în timp constant. | ||
| - | * Nu este mereu echilibrat. | ||
| - | |||
| - | **HEAP** | ||
| - | * Heap-ul stă la baza implementării cozii de priorități și a algoritmului heapsort | ||
| - | * Se poate folosi pentru găsirea eficientă a celui de-al k-lea cel mai mic/mare (minheap/maxheap) element. | ||
| - | * Este mereu un arbore echilibrat (complet) | ||
| - | |||
| - | <note>Un arbore este **echilibrat** dacă fiecare subarbore este echilibrat și înălțimea orcăror doi subarbori diferă cu cel mult 1. Această regulă stă la baza implementării unui arbore AVL. Arborii roșu-negru impun alte reguli. | ||
| - | |||
| - | {{ :sd-ca:2017:laboratoare:balancedtree-example.png?300 |}}</note> | ||
| ===== Exerciții ===== | ===== Exerciții ===== | ||
| + | <hidden> | ||
| Acest articol se va realiza pornind de la **{{sd-ca:taskuri:lab9-tasks-2017.zip|scheletul de cod}}**. | Acest articol se va realiza pornind de la **{{sd-ca:taskuri:lab9-tasks-2017.zip|scheletul de cod}}**. | ||
| Line 228: | Line 212: | ||
| - | ==== Heap (Bonus) ==== | + | ==== Heap-uri ==== |
| - | 1. [**1p**] **heap.h** Definiţi o structură de vector pe care să poată fi folosite operaţiile de baza ale unui heap, şi funcţii de construcţie şi eliberare a structurii: | + | 1. [**1p**] **heap.h** Definiţi o structură de vector pe care să poată fi folosite operaţiile de heap-uri, şi funcţii de construcţie şi eliberare a structurii: |
| *[**0.5p**] Constructor pentru inițializarea unui heap. ''capVect'' reprezintă numărul maxim de elemente din vector. Codul va trebui să aloce memorie separată şi apoi să lucreze cu acea memorie. | *[**0.5p**] Constructor pentru inițializarea unui heap. ''capVect'' reprezintă numărul maxim de elemente din vector. Codul va trebui să aloce memorie separată şi apoi să lucreze cu acea memorie. | ||
| Line 317: | Line 301: | ||
| } | } | ||
| </code> | </code> | ||
| + | </hidden> | ||
| ===== Resurse ===== | ===== Resurse ===== | ||