Cod sursa(job #1021827)

Utilizator Dayanna000Amegica Dayanna Dayanna000 Data 4 noiembrie 2013 12:11:23
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<iostream>
#include<fstream>
using namespace std;
int x[500001],nr[11];
int maxim(int x[],int n)
  {
      int i,maxi;
      maxi=x[1];
      for(i=2;i<=n;i++)
        if(x[i]>maxi)
          maxi=x[i];
      return maxi;
  }
void numara(int x[],int n, int cif)
   {
      int aux[500001],i;
      for(i=0;i<=9;i++)
        nr[i]=0;
      for(i=1;i<=n;i++)
        nr[(x[i]/cif)%10]++;
      for(i=1;i<=9;i++)
        nr[i]=nr[i]+nr[i-1];
      for(i=n;i>=1;i--)
        {
           aux[nr[(x[i]/cif)%10]]=x[i];
           nr[(x[i]/cif)%10]--;
        }
      for(i=1;i<=n;i++)
        x[i]=aux[i];
   }
void radixsort(int x[],int n)
  {
      int m,cif,i;
      m=maxim(x,n);
      cif=1;
      while(m/cif>0)
        {
            numara(x,n,cif);
            cif=cif*10;
        }
  }
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int i,n;
f>>n;
for(i=1;i<=n;i++)
  f>>x[i];
radixsort(x,n);
for(i=1;i<=n;i++)
  g<<x[i]<<"  ";
f.close();
g.close();
return 0;
}