[C] Adattare il mio codice ad un vettore bidimensionale

di il
3 risposte

[C] Adattare il mio codice ad un vettore bidimensionale

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);
    }
}

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte