Académique Documents
Professionnel Documents
Culture Documents
1. Descrierea algoritmilor
Vezi http://www.regisco.ro/seminarii/StructuriDeDate/Fisiere/heapsort.pdf.
2. Exemplu de implementare
#include <assert.h>
#include <stdlib.h>
/*
Formule de calcul pentru accesarea elementelor:
Parinte(i) = i / 2
Stanga(i) = i * 2
Dreapta(i) = i * 2 + 1
Macrodefinitii pentru acces la elemente
translatate din [1,n] in [0,n-1]:
*/
#define H_PARINTE(i) (((i) - 1) / 2)
#define H_STANGA(i) (((i) + 1) * 2 - 1)
#define H_DREAPTA(i) (((i) + 1) * 2)
//
//
//
//
/* Functii */
// Construire heap gol
Heap* CreareHeapGol(int dimMaxima);
// Construire heap pe baza unui vector existent
Heap* CreareHeap(TipHeap* dateHeap, int dimDate, int dimMaxima);
// Distrugere heap (eliberare resurse)
void DistrugereHeap(Heap* pHeap);
*/
Heap* CreareHeapGol(int dimMaxima)
{
Heap* pHeap;
pHeap = (Heap*)malloc(sizeof(Heap));
assert(pHeap != NULL);
pHeap->DimHeap
= 0;
pHeap->DimDate
= 0;
pHeap->DimVector = dimMaxima;
pHeap->Date = (TipHeap*)malloc(dimMaxima * sizeof(TipHeap));
assert(pHeap->Date != NULL);
return pHeap;
}
pHeap->DimHeap = pHeap->DimHeap - 1;
Heapify(pHeap, 0);
}
}
// reconstituim structura