Cod sursa(job #2900151)

Utilizator alex_bb8Banilean Alexandru-Ioan alex_bb8 Data 10 mai 2022 14:30:45
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("radixsort.in");
ofstream g("radixsort.out");

//ifstream f("D:/Proiecte/Clion/Projects/hashuri.in");
//ofstream g("D:/Proiecte/Clion/Projects/hashuri.out");

int n, v[10000003];
vector<int>bucket[10];
const int max_nr_of_digits = 10;

void RadixSort(int v[], int s, int d){

    // for numbers with max 10 digits;
    int digit_factor = 1;

    for(int k = 1; k <= max_nr_of_digits; ++k){

        for(int i = 0; i < 10 ; ++i)
            bucket[i].clear();

        for(int i = s; i <= d; ++i){
            int bucket_index = (v[i] / digit_factor) % 10;
            bucket[bucket_index].push_back(v[i]);
        }

        int ins_index = 0;

        for(int i = 0; i < 10; ++i)
            for(auto x : bucket[i])
                v[ins_index++] = x;

        digit_factor *= 10;
    }
}

int main(){

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

    RadixSort(v, 0, n - 1);

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

    f.close();
    g.close();

    return 0;
}