Cod sursa(job #1026751)

Utilizator Dayanna000Amegica Dayanna Dayanna000 Data 11 noiembrie 2013 22:17:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;
int nr[17];
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;
  }
int numara(int x[],int n, long long cif)
   {
      int aux[500005],i;
      for(i=0;i<=16;i++)
        nr[i]=0;
      for(i=1;i<=n;i++)
        nr[(x[i]/cif)&15]++;
      for(i=1;i<=15;i++)
        nr[i]=nr[i]+nr[i-1];
      for(i=n;i>=1;i--)
        {
           aux[nr[(x[i]/cif)&15]]=x[i];
           nr[(x[i]/cif)&15]--;
        }
      for(i=1;i<=n;i++)
        x[i]=aux[i];
   }
int radixsort(int x[],int n)
  {
      int m,i;
      long long cif;
      m=maxim(x,n);
      cif=1;
      while(m/cif>0)
        {
            numara(x,n,cif);
            cif=cif<<4;
        }
  }

int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    int n, x[500005],i;
    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;
}