This shows you the differences between two versions of the page.
sd-ca:laboratoare:laborator-11 [2015/05/17 23:39] cosmin_ioan.petrisor [Proprietăţi ale structurii de heap binar. Operaţii elementare.] |
sd-ca:laboratoare:laborator-11 [2015/05/21 05:57] (current) mihai.neacsu2901 [Aplicaţii] |
||
---|---|---|---|
Line 143: | Line 143: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | 2. [3p] Implementaţi operaţiile elementare de lucru cu heap-uri, prezentate în secţiunile anterioare: | ||
+ | |||
+ | *[1p] Implementati functiile de calcul ai parintelui si ai descendentilor. | ||
+ | |||
+ | <code c++> | ||
+ | template <typename T> | ||
+ | int Heap<T>::parent(int poz) | ||
+ | { | ||
+ | // TODO 2.1 | ||
+ | } | ||
+ | |||
+ | template <typename T> | ||
+ | int Heap<T>::leftSubtree(int poz) | ||
+ | { | ||
+ | // TODO 2.1 | ||
+ | } | ||
+ | |||
+ | template <typename T> | ||
+ | int Heap<T>::rightSubtree(int poz) | ||
+ | { | ||
+ | // TODO 2.1 | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Cele trei funcţii de mai sus vor întoarce -1 în cazul în care părintele, respectiv descendenţii nu există. | ||
+ | |||
+ | * [2p] Implementati pushUp si pushDown. | ||
+ | <code c++> | ||
+ | template <typename T> | ||
+ | void Heap<T>::pushUp(int poz) | ||
+ | { | ||
+ | // TODO 2.2 | ||
+ | | ||
+ | } | ||
+ | |||
+ | template <typename T> | ||
+ | void Heap<T>::pushDown(int poz) | ||
+ | { | ||
+ | // TODO 2.2 | ||
+ | | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | 3. [1p] Implementaţi operaţiile uzuale de lucru cu heap-uri: | ||
+ | |||
+ | <code c++> | ||
+ | template <typename T> | ||
+ | void Heap<T>::insert(T x) | ||
+ | { | ||
+ | // TODO 3 | ||
+ | } | ||
+ | |||
+ | template <typename T> | ||
+ | T Heap<T>::peek() | ||
+ | { | ||
+ | // TODO 3 | ||
+ | } | ||
+ | |||
+ | template <typename T> | ||
+ | T Heap<T>::extractMin() | ||
+ | { | ||
+ | // TODO 3 | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | 4. [2p] **p4.cpp** Implementaţi algoritmul de sortare folosind heap-uri, alegând una dintre cele două metode prezentate mai sus. Testați implementarea voastră a sortării rulând scriptul de testare ''test.sh''. | ||
+ | |||
+ | **Obs.:** | ||
+ | * Se va citi întâi numărul **n** de elemente, iar apoi **n** numere care trebuie sortate. | ||
+ | * Citirea se face de la **stdin**. Nu modificați afișarea! Afișarea are formatul folosit pentru script-ul de testing. | ||
+ | **BONUS!** [1p] Implementaţi şi celelalta metoda de sortare prin heap-uri, în afară de cea aleasă iniţial. Pentru testare se va modifica doar funcția ''heapSort'' și se va executa tot scriptul ''test.sh''. | ||
+ | |||
<hidden> | <hidden> | ||
2. [3p] Implementaţi operaţiile elementare de lucru cu heap-uri, prezentate în secţiunile anterioare: | 2. [3p] Implementaţi operaţiile elementare de lucru cu heap-uri, prezentate în secţiunile anterioare: |