Cod sursa(job #1021031)

Utilizator Iustin_BulimarFMI Iustin Bulimar Iustin_Bulimar Data 2 noiembrie 2013 23:58:52
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;

ifstream cin("algsort.in");
ofstream cout("algsort.out");

void countsort(int v[], int n, int p)
{
    int a[n], i, x[10]={0}, c;
    for(i=1; i<=n; i++)
    {
        c=(v[i]/p)%10;
        x[c]++;
    }
    for(c=1; c<=9; c++)
        x[c]+=x[c-1];
    for(i=n; i>=1; i--)
    {
        c=(v[i]/p)%10;
        a[x[c]]=v[i];
        x[c]--;
    }
    for(i=1; i<=n; i++)
        v[i]=a[i];
}
void radixsort(int v[], int n)
{
    int mx=v[1];
    for(int i=2; i<=n; i++)
        if (v[i]>mx)
            mx=v[i];
    for(int p=1; mx/p>0; p*=10)
        countsort(v, n, p);
}
int main()
{
    int v[500001], n, i;
    cin>>n;
    for(i=1; i<=n; i++) cin>>v[i];
    radixsort(v, n);
    for(i=1; i<=n; i++) cout<<v[i]<<" ";
    return 0;
}