Diferente pentru heapuri intre reviziile #49 si #50

Nu exista diferente intre titluri.

Diferente intre continut:

* Sortarea elementelor din heap in $O(N log N)$
* Cautarea unui element (singura care nu este prea eficienta) in $O(N)$.
Desigur, toate aceste operatii se fac mentinand permanent structura de heap a arborelui, adica respectand modul de repartizare a nodurilor pe nivele si inaltarea elementelor de valoare mai mare. Este de la sine inteles ca datele nu se vor reprezenta in memorie in forma arborescenta, ci in cea vectoriala. Sa le analizam pe rand.
Desigur, toate aceste operatii se fac mentinand permanent structura de heap a arborelui, adica respectand modul de repartizare a nodurilor pe nivele si inaltarea elementelor de valoare mai mare. Este de la sine inteles ca datele nu se vor reprezenta in memorie in forma arborescenta, ci in cea vectoriala.
Precizam de asemenea ca heap-ul poate fi organizat pe baza operatiei de $≤$. Astfel, in varful heap-ului vom avea minimul dintre elementele pastrate in heap. In functie de operatia folosita, putem numi structura max-heap sau min-heap. In continuare vom prezenta operatiile intr-un max-heap, adaptarea lor pentru min-heap-uri fiind usoara.
Practic operatia aceasta nu are de facut decat sa intoarca valoarea primului element din vector:
==code(c) |
typedef int Heap[10001];
void Max(Heap H, int N)
{
const int MAX_HEAP_SIZE = 16 * 1024;
typedef int Heap[MAX_HEAP_SIZE];
void Max(Heap H, int N) {
  return H[1];
}
==

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.