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-1);
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+1==j){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}else{
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];
}
FATTO COSì FUNZIONA il controllo if
anche se non so il perchè...sono andato per esclusione ma l'intero programma non l'ho per niente capito...comunque GRAZIE MILLE senza di te non sarei riuscito a farlo funzionare!!!!