int countSort(int a[], int n, int min, int max)
{
int i, j, k;
int *b;
b = (int *) malloc( max - min + 1);
if ( b == NULL )
return -1;
for ( i = 0; i < max - min + 1; i++ )
b[i] = 0;
for ( i = 0; i < n; i++ )
b[ a[i] - min ]++;
k = 0;
for ( i = 0; i < max - min + 1; i++ )
for ( j = 0; j < b[i]; j++ )
a[k++] = i + min;
free(b);
return 0;
}