Cod sursa(job #2282394)

Utilizator CatincaBCatinca Balinisteanu CatincaB Data 13 noiembrie 2018 18:27:21
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>

using namespace std;

int Max(int v[],int n)
{
    int mx=v[0];
    for(int i=1;i<n;i++)
        if(v[i]>mx) mx=v[i];
    return mx;
}

void countSort(int v[],int n,int e)
{
    int out[n];
    int i,c[10]={0};

    for(i=0;i<n;i++) c[(v[i]/e)%10]++;
    for(i=1;i<10;i++) c[i]+=c[i-1];
    for(i=n-1;i>=0;i--)
    {
        out[c[(v[i]/e)%10]-1]=v[i];
        c[(v[i]/e)%10]--;
    }
    for(i=0;i<n;i++) v[i]=out[i];
}
void radixSort(int v[],int n)
{
    int m=Max(v,n);
    for(int e=1;m/e>0;e*=10)
        countSort(v,n,e);
}


int main()
{

    int n,i;
    cin>>n;
    int v[n];
    for(i=0;i<n;i++) cin>>v[i];
    radixSort(v,n);
    for(i=0;i<n;i++) cout<<v[i]<<" ";
    return 0;
}