Pagini recente » Cod sursa (job #1688948) | Cod sursa (job #3003230) | Cod sursa (job #1720283) | Cod sursa (job #2219116) | Cod sursa (job #2272339)
#include <iostream>
#include <fstream>
///RadxSORT cu coada simulata;
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int cautamaxim(int x[], int n)
{
int i, maxx = x[0];
for (i = 1; i < n; i++)
if (x[i] > maxx)
maxx = x[i];
return maxx;
}
void calculeazaRadx(int x[], int n, int k)
{
int coadafin[n];
int i, y[10] = {0};
for (i = 0; i < n; i++)
y[( x[i] / k ) % 10]++;
for (i = 1; i < 10; i++)
y[i] += y[i - 1];
for (i = n - 1; i >= 0; i--)
{
coadafin[ y[ (x[i] / k) % 10 ] - 1] = x[i];
y[( x[i] / k ) % 10 ]--;
}
for (i = 0; i < n; i++)
x[i] = coadafin[i];
}
void radixsort(int x[], int n)
{
int i, m;
m = cautamaxim(x, n);
for (i = 1; m / i > 0; i *= 10)
calculeazaRadx(x, n, i);
}
void afisare(int x[], int n)
{ int i;
for (i = 0; i < n; i++)
g << x[i] << " ";
}
int main()
{ int n, i, x[500001];
f >> n;
for (i = 0; i < n; i++)
f >> x[i];
radixsort(x, n);
afisare(x, n);
return 0;
}