qualcuno sa dirmi xk non mi ordina niente???
l'errore è sicuramente nella parte in grassetto (inserita xkè il prof vuole che si traduca fedelmente il prog dal Pascal in C).

codice:
#include <stdlib.h>
#include <stdio.h>

#define MAX 300


/*
 *  Funzione Merge per la fusione di due
 *  componenti ordinate dell'array.
 */

void Merge(int A[], int primo, int mezzo, int ultimo) {
  int i, j, k, h, B[MAX];

  i = primo;
  j = mezzo+1;
  k = 0;
  while (i <= mezzo && j <= ultimo) {
    if (A[i] < A[j]) {
      B[k] = A[i];
      i++;
    } else {
      B[k] = A[j];
      j++;
    }
    k++;
  }

  if (i <= mezzo) {
    j = ultimo - k;
    for (h=j; h>=0; h--) 
      A[k+h] = A[i+h];
    for (j=primo; j<k-1; j++)
      A[j] = B[j];
    return;
  }
 }



/*
 *  Funzione ricorsiva MergeSort.
 */

void MergeSort(int A[], int primo, int ultimo) {
  int q;

  if (primo < ultimo) {
    q = (primo+ultimo)/2;
    MergeSort(A, primo, q);
    MergeSort(A, q+1, ultimo);
    Merge(A, primo, ultimo, q);
  }
  return;
}


/*
 *  Funzione principale
 */

int main() 
  {
    int *vet, n, i;
    
    printf("Quanti elementi vuoi inserire nell'array?: ");
    scanf("%d", &n);
    printf("\n");
    
    vet = (int *) malloc (n*sizeof(int));

    for(i = 0; i < n; i++)
      {
        printf("Inserisci il %d elemento dell'array: ", i+1);
        scanf("%d", &vet[i]);
      }

    printf("\nGli elementi inseriti nell'array sono: ");
      
    for(i = 0; i < n; i++)
      printf("%d ", vet[i]);
	
    printf("\n");

    MergeSort(vet, 0, n-1);

    printf("\nL'array ordinato e' il seguente: ");
    
    for(i = 0; i < n; i++)
        printf("%d ", vet[i]);
    printf("\n\n");
    system("pause");
    return 0;
 }

se al posto di quel codice inserisco il seguente, il prog funziona, ma vorrei capire qual è l'errore che faccio nel precedente.
codice:
while (i <= mezzo) {
      B[k] = A[i];
      i++;
      k++;
    }
  } else {
    while (j <= ultimo) {
      B[k] = A[j];
      j++;
      k++;
    }
  }
  for (k = primo; k <= ultimo; k++)
    A[k] = B[k - primo];
grazie.