ragazzi lo correggiamo insieme? sono stato un sacco di tempo per riuscire ad eseguirlo ma non funziona mi da valori totalmente sballati....e l'errore non lo trovo
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,1,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+1==j){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}else{
if(i+1<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<=inf;k++)
a[k]=c[k];
}
vi aspetto con ansia