Cod sursa(job #660176)

Utilizator AnaTudorTudor Ana Maria Mihaela AnaTudor Data 11 ianuarie 2012 20:56:38
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>
#include <vector>
#include <math.h>
# define MAX 500001
using namespace std;

int x[MAX],n;
vector < vector  <int> >buckets;

void radixSort(int x[],int n)
{
    int val,m=0;
      for(int i=0;i<7;i++)
      {
          for(int j=0;j<n;j++)
            { val=(int)((x[j])/pow(10,i))%10;
              buckets[val].push_back((x[j]));
            }
        for(int k=0;k<10;k++)
         {
            for(int l=0;l<buckets[k].size();l++)
                {  x[m]=buckets[k][l];
                   m++;
                }
          buckets[k].clear();
         }
        m=0;
    }
  buckets.clear();
}

int main()
{
   freopen("algsort.in","r",stdin);
   freopen("algsort.out","w",stdout);
   scanf("%d",&n);
   buckets.resize(10);
   for(int i=0;i<n;++i)
      scanf("%d",&x[i]);

    radixSort(x,n);
   for(int i=0;i<n;++i)
    {
         printf("%d ",x[i]);
    }


    return 0;
}