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);
}