Pagini recente » Cod sursa (job #2874101) | Cod sursa (job #1605519) | Cod sursa (job #854382) | Cod sursa (job #2605683) | Cod sursa (job #2618995)
#include <iostream>
#include <fstream>
using namespace std;
void cnt(int v[], int n, int exp)
{
int output[n];
int i, numara[10] = {0};
for (i=0; i<n; i++)
numara[(v[i]/exp)%10]++;
for (i=1; i<10; i++)
numara[i] += numara[i-1];
for (i=n-1; i>=0; i--)
{
output[numara[(v[i]/exp)%10]-1] = v[i];
numara[(v[i]/exp)%10]--;
}
for (i=0; i<n; i++)
v[i] = output[i];
}
void radixsort(int v[], int n)
{
int maxim = v[0];
for (int i=1; i<n; i++)
if (v[i] > maxim)
maxim = v[i];
for (int k=1; maxim/k>0; k*=10)
cnt(v, n, k);
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, i, v[500001];
f>>n;
for(i=0; i<n; i++)
f>>v[i];
radixsort(v, n);
for(i=0; i<n; i++)
g<<v[i]<<" ";
return 0;
}