Cod sursa(job #1022607)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 5 noiembrie 2013 19:50:33
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");

int a[500001], nr[11];
int maxim (int x[], int n)
{
    int i, mx;
    mx=x[1];
    for (i=2;i<=n;i++)
        if (x[i]>mx)
        mx=x[i];
    return mx;
}

void cnt (int x[], int n, int c)
{
    int aux[500001],i;
    for (i=0;i<10;i++)
        nr[i]=0;
    for (i=1;i<=n;i++)
        nr[(x[i]/c)%10]++;
    for (i=1;i<10;i++)
        nr[i]=nr[i]+nr[i-1];
    for (i=n;i>=1;i--)
    {
        aux[nr[(x[i]/c)%10]]=x[i];
        nr[(x[i]/c)%10]--;
    }
    for (i=1;i<=n;i++)
        x[i]=aux[i];
}
void radixsort (int x[],int n)
{
    int m,c;
    m=maxim(x,n);
    c=1;
    while(m/c>0)
    {
        cnt(x,n,c);
        c=c*10;
    }

}

int main()
{
   int n;
   f>>n;
   int i;
   for (i=1;i<=n;i++)
        f>>a[i];
   radixsort(a,n);
   for(i=1;i<=n;i++)
    g<<a[i]<<" ";
   f.close();g.close();
   return 0;
}