codice:
#include <stdio.h>
#define dim 100

void merge(int a[], int inf, int med, int sup);
void msort(int a[], int i, int j);


int main(){
    
    int a[dim];
    int n, i, j;
    
    printf("inserire dimensioni vettore (max %d) = ", dim);
    scanf("%d", &n);
    
    for(i=0;i<n;i++){
                     printf("a[%d] = ", i);
                     scanf("%d", &a[i]);
                     }
    
msort(a,0,n);
for(i=0;i<n;i++)
printf("%d\n", a[i]);

system("pause");
return 0;
}

void msort(int a[], int i, int j){
     
     int med,temp;
     
   
                      if(i<j){
                                med=(i+j)/2;
                                msort(a,i,med);
                                msort(a,med+1,j);
                                merge(a,i,med,j);
                                }
                                
}


void merge(int a[], int inf, int med, int sup){
     int i,j,k;
     int c[100];
     
     
     i=inf;
     j=med+1;
     k=inf;
     
     while((i<=med)&&(j<=sup)){
                               if(a[i]<a[j])
                               {c[k]=a[i];i++;k++;}
                               else{c[k]=a[j];j++;k++;}
                               }
     while(i<med)
         {c[k]=a[i];i++;k++;}
     while(j<sup)
         {c[k]=a[j];j++;k++;}
     
     for(k=inf;k<=sup;k++)
     a[k]=c[k-inf];
}
chiaro???? sei stato fantastico...però il problema non l'abbiamo ancora risolto....diciamo che i valori sballati sono meno gravi nel senso prima mi uscivano uno o più valori del tipo
-18374612...ecc. adesso si avvicinano di più a quelli da me inseriti...spero che non esce nella tracce d'esame se no sto inguaiato....non lo capisco proprio....