Salve, sto provando a rendere valido questo codice di HeapSort (valido solo per gli array) per le matrici, ma non riesco ad adattarlo ad una matrice bidimensionale A[n][m]. Qualcuno saprebbe suggerirmi?
Grazie in anticipo!
void swap(int A[MAX],int a,int b)
{
int swap;
swap=A[a];
A[a]=A[b];
A[b]=swap;
}
int left(int i)
{
return 2*i+1;
}
int right(int i)
{
return 2*i+2;
}
void Heapify(int A[MAX],int i)
{
int l,r,larger;
l=left(i);
r=right(i);
if(l<HeapSize&&A[l]>A[i])
larger=l;
else
larger=i;
if(r<HeapSize&&A[r]>A[larger])
larger=r;
if(larger!=i)
{
swap(A,i,larger);
Heapify(A,larger);
}
}
void BuildHeap(int A[MAX])
{
int i;
HeapSize = ArraySize;
for (i=ArraySize/2; i>=0; i--)
Heapify(A,i);
}
void HeapSort(int A[MAX])
{
int i;
BuildHeap(A);
for (i=ArraySize-1; i>=1; i--)
{
swap(A,0,i);
HeapSize--;
Heapify(A,0);
}
}