Cod sursa(job #2151506)

Utilizator dacianouaPapadia Mortala dacianoua Data 4 martie 2018 16:09:55
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <string.h>
#define nmax 500000
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,v[nmax+5],maxv=0;
void Count_Sort(int x)
{
    int viz[10],output[nmax+5];
    memset(viz,0,sizeof viz);
    for(int i=1;i<=n;i++)
        viz[v[i]/x]++;
    for(int i=2;i<=9;i++)
        viz[i]+=viz[i-1];
    for(int i=1;i<=n;i++)
    {
        output[viz[v[i]/x]]=v[i];
        viz[v[i]/x]--;
    }
    for(int i=1;i<=n;i++)
        v[i]=output[i];
}
void Radix_Sort(int x)
{
    for(int i=1;x/i>0;i*=10)
        Count_Sort(i);
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
        {fin>>v[i];if(v[i]>maxv)maxv=v[i];}
    Radix_Sort(maxv);
    for(int i=1;i<=n;i++)
        fout<<v[i]<<" ";
    return 0;
}