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
vi aspetto con ansiacodice:#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]; }![]()

Rispondi quotando