// Functie pentru a introduce valoarea maxima in sir int obtineMax(int vector[],
int n) { int max = vector[0]; for (int i = 1; i < n; i++) if (vector[i] > max) max = vector[i]; return max; } //Functie pentru a numara si a sorta sirul void countSort(int vector[], int n, int exp) { int output[n]; int i, numara[10] = {0}; //Stocheaza numarul de aparitii for (i = 0; i < n; i++) numara[(vector[i] / exp) % 10]++; //Shimba numarul numara[i] astfel incat acesta contine acum pozitia reala a lui output[] for (i = 1; i < 10; i++) numara[i] += numara[i - 1]; //Construieste sirul de tip output for (i = n - 1; i >= 0; i--) { output[numara[(vector[i] / exp) % 10] - 1] = vector[i]; numara[(vector[i] / exp) % 10]--; } //Copiaza sirul de tip output in vector[] for (i = 0; i < n; i++) vector[i] = output[i]; } // Sorteaza vector[] de dimensiuni n folosind Radix Sort void radixsort(int vector[], int n) { //Cauta numarul maxim int m = obtineMax(vector, n); //Numara sortarea pentru fiecare valoare for (int exp = 1; m / exp > 0; exp *= 10) countSort(vector, n, exp); } //Programul pentru a testa functia de mai sus int main() { int vector[] = {17, 15, 705, 40, 92, 29, 3, 67}; int n = sizeof(vector)/sizeof(vector[0]); radixsort(vector, n); for (int i = 0; i < n; i++) cout << vector[i] << " "; system("PAUSE"); }