<font color=blue>
void countingSort(int* A, int lengthA)
{
//Cacolo degli elementi max e min
int max=A[0];
int min=A[0];
int i=1;
for(; i<lengthA; i++){
if(A[i]>max) max=A[i];
else if(A[i]<min) min=A[i];
}
//Costruzione dell'array C
int lengthC=max-min+1;
int C[lengthC]; //crea l'array C
for(i=0; i<lengthC; i++) C[i]=0; //inizializza a zero gli elementi di C
for(i=0; i<lengthA; i++)
C[A[i]-min]++; //aumenta il numero di volte che si è incontrato il valore
//Ordinamento in base al contenuto dell'array delle frequenze C
int k=0; //indice per l'array A
for(i=0; i<lengthC; i++){
int valore=i+min;
while(C[i]>0){ //scrive C[i] volte il valore nell'array A
A[k++]=i+min;
C[i]--;
}
}
}</font id=blue>
Per qualsiasi cosa , ricorda Wiki...
http://it.wikipedia.org/wiki/Counting_sor