Cod sursa(job #2252186)

Utilizator dianateodora2003Panainte Diana- Teodora dianateodora2003 Data 2 octombrie 2018 14:07:19
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int GetMax(int arr[],int n)
{
    int nax=arr[0];
    for(int i=1;i<n;i++) if(nax<arr[i]) nax=arr[i];
}
void CountSort(int arr[],int n,int exp)
{
    int i,c[10]{},a[n];
    for(i=0;i<n;i++) c[(arr[i]/exp)%10]++;
    for(i=1;i<10;i++) c[i]+=c[i-1];
    for(i=n-1;i>=0;i--)
    {
        a[c[(arr[i]/exp)%10]-1]=arr[i];
        c[(arr[i]/exp)%10]--;
    }
    for(i=0;i<n;i++) arr[i]=a[i];
}

void RadixSort(int arr[],int n)
{
    int m=GetMax(arr,n); int exp;
    for(exp=1;m/exp>0;exp*=10) CountSort(arr,n,exp);
}
int main()
{
    int n,a[500001];
    fin>>n;
    for(int i=0;i<n;i++) fin>>a[i];
    RadixSort(a,n);
    for(int i=0;i<n;i++) fout<<a[i]<<' ';
    return 0;
}