Cod sursa(job #2618303)

Utilizator Vlad_AnicaAnica-Popa Vlad-Ioan Vlad_Anica Data 24 mai 2020 16:52:51
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#include<cstdlib>
using namespace std;

ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int a[500000], ordonat[500000];


void counting_sort(int v[], int right, int exp)
{
    int freq[1024]={0}, exp2=1023;
    int i;
    for(i=0 ; i<=right ; i++)
        freq[(v[i]/exp)&exp2]++;
    for(i=1 ; i<=1023 ; i++)
    {
         freq[i]+=freq[i-1];
    }
    for(i=right ; i>=0 ; i--)
    {
        ordonat[freq[(v[i]/exp)&exp2]-1]=v[i];
        freq[(v[i]/exp)&exp2]--;
    }
    for(i=0 ; i<=right ; i++)
         v[i]=ordonat[i];
}
int maxx;
void ridiche_sort(int v[], int right)
{
    int j, put2=1;
    for(j=0 ; j<=3 ; j++)
    {
        counting_sort(a, right, put2);
        put2=put2<<10;
    }
}

int main()
{
    int i,n;
    fin >>n;
    maxx=0;
    for(i=0;i<n;i++)
    {
        fin >> a[i];
        if(maxx<a[i])
            maxx=a[i];
    }

    ridiche_sort(a, n-1);
    for(i=0;i<n;i++)
        fout << ordonat[i] << " ";

    return 0;
}