Cod sursa(job #2151508)

Utilizator dacianouaPapadia Mortala dacianoua Data 4 martie 2018 16:12:42
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 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)%10]++;
    for(int i=2;i<=9;i++)
        viz[i]+=viz[i-1];
    for(int i=1;i<=n;i++)
    {
        output[viz[(v[i]/x)%10]]=v[i];
        viz[(v[i]/x)%10]--;
    }
    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;
}