Ho corretto il codice:
codice:void ordina(int *v,int n,int max, int min) { int *index,*in,*a,i,k=0; if(min>0) { min=0; max++; } index=(int*)calloc((max-min),sizeof(int)); in=index; if(min<0) for(i=0;i<abs(min);i++) in++; for(i=0;i<n;i++) in[v[i]]++; for(i=0;i<(max-min);i++) { if(index[i]>0) { do { index[i]--; v[k++]=i-min; }while(index[i]>0); } } free(index); }