Sunteți pe pagina 1din 1

#include <iostream>

#include <cstdlib> using namespace std;

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

S-ar putea să vă placă și