Pagini recente » Cod sursa (job #280800) | Cod sursa (job #3234831) | Cod sursa (job #114997) | Cod sursa (job #2526873) | Cod sursa (job #976148)
Cod sursa(job #976148)
#include <iostream>
#include <fstream>
using namespace std;
int n,i;
int v[500001];
void radixsort(int *a, int n)
{
int i, b[n+5], m = a[0], exp = 1 , k=0;
for (i = 0; i < n; i++)
{
if (a[i] > m)
m = a[i];
}
while ((m / exp > 0)&&(k<9))
{
k++;
int bucket[10] =
{ 0 };
for (i = 0; i < n; i++)
bucket[(a[i] / exp) % 10]++;
for (i = 1; i < 10; i++)
bucket[i] += bucket[i - 1];
for (i = n - 1; i >= 0; i--)
b[--bucket[(a[i] / exp) % 10]] = a[i];
for (i = 0; i < n; i++)
a[i] = b[i];
exp *= 10;
}
}
int main(void)
{
FILE * f;
f=fopen("algsort.in","r");
ofstream g("algsort.out");
fscanf(f,"%d",&n);
for (i=0;i<n;i++)
fscanf(f,"%d",&v[i]);
radixsort(v,n);
for (i=0;i<n;i++)
g<<v[i]<<' ';
g.close();
return 0;
}