Cod sursa(job #2402030)

Utilizator SmokeCiocotisan Cosmin Smoke Data 10 aprilie 2019 11:57:03
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb


#include <iostream>
#include <fstream>
#include <vector>


using namespace std;
vector<int> v;
int maxim = 0;

typedef vector<int > vect;
int n;

void citire()
{
    ifstream in("radixsort.in");
    int x;

    while(in>>x)
    {

        if (maxim < x)
            maxim = x;

        v.push_back(x);
    }

    n = v.size();
    in.close();
}

void countSort(int exp)
{
    int output[n];
    int count[10] = { 0 };

    for (int i = 0; i < n; i++)
        count[(v[i] / exp) % 10]++;

    for (int i = 1; i < 10; i++)
        count[i] += count[i - 1];

    for (int i = n - 1; i >= 0; i--)
    {
        output[count[(v[i] / exp) % 10] - 1] = v[i];
        count[(v[i] / exp) % 10]--;
    }

    for (int i = 0; i < n; i++)
        v[i] = output[i];


}

void Radix_sort()
{
    for (int exp = 1; maxim / exp > 0; exp *= 10)
        countSort(exp);

}


void afisare()
{

    ofstream out("radixsort.out");

    for (int i = 0; i < n; i++)
        out << v[i] << " ";


}
int main()
{
    citire();
    Radix_sort();
    afisare();

    return 0;

}