Cod sursa(job #2610813)

Utilizator Zamfirescuste2Zamfirescu Stefan Zamfirescuste2 Data 5 mai 2020 18:07:11
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <vector>
using namespace std;

void RadixSort(int v[],int nr)
{
    int pas=0;
    vector <int> bucket[256];
    int max1=0,nr_cifre=0;
    for(int i=0;i<nr;i++)
    {
        if(v[i]>max1)
            max1=v[i];
    }
    while(max1!=0)
    {
        nr_cifre++;
        max1 = max1 / 256;
    }
    for(int k=0;k<nr_cifre;k++)
    {
        for(int i=0;i<nr;i++)
            bucket[(v[i]>>pas) & 255].push_back(v[i]);
        nr=0;
        for(int i=0;i<256;i++)
        {
            for(size_t j=0;j<bucket[i].size();j++)
                v[nr++]=bucket[i][j];
            bucket[i].clear();
        }
        pas= pas + 8 ;
    }
}
int main() {
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    int n;
    int array[500001];
    f >> n;
    for (int i = 0; i < n; ++i)
        f >> array[i];
    RadixSort(array,n);
    for (int i = 0; i < n; ++i)
        g << array[i] << " ";
    g << "\n";
    return 0;
}