Cod sursa(job #1315445)

Utilizator sanzianaioneteIonete Sanziana sanzianaionete Data 12 ianuarie 2015 20:29:53
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500005],n;
void countsort(int n, int exp)
{
    int aux[n];
    int i, c[10]={0};
    for (i=0;i<n;i++)
        c[(a[i]/exp)%10]++;
    for (i=1;i<10;i++)
        c[i]+=c[i-1];
    for (i=n-1;i>=0;i--)
    {
        aux[c[(a[i]/exp)%10]-1]=a[i];
        c[(a[i]/exp)%10]--;
    }
    for (i=0;i<n;i++)
        a[i]=aux[i];
}
void radixsort(int n)
{
    int m=0;
    for(int i=0;i<n;i++)
        if(a[i]>m)
            m=a[i];
    int exp=1;
    while(exp<=m)
    {
        countsort(n, exp);
        exp*=10;
    }
}
int main()
{
    f>>n;
    for(int i=0;i<n;i++)
        f>>a[i];
    radixsort(n);
    for(int i=0;i<n;i++)
        g<<a[i]<<' ';
        f.close();g.close();
        return 0;
}