Cod sursa(job #2229348)

Utilizator rnqftwcalina florin daniel rnqftw Data 6 august 2018 16:40:59
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<bits/stdc++.h>

using namespace std;
#define N_Max 10000007
int v[N_Max];
int vectorAux[N_Max];

void printArray(int array[],int n){
    ofstream out("radixsort.out");
    for(int i = 1 ; i <= n ; i++)
        out << array[i] << " ";
    out.close();
}

void radixSort(int n){

    int mx = -1;
    for(int i = 1 ; i <= n ; i++){
        mx = max(mx,v[i]);
    }
    int significantDigit = 1;
    while(mx/significantDigit > 0){
        int counting[10] = {0};
            for(int i = 1 ; i <= n ; i++)
            counting[v[i]/significantDigit%10]++;

        for(int i = 1 ; i <= 9 ; i++)
            counting[i] += counting[i-1];

        for(int i = n ; i >= 0 ; i -- ){
            vectorAux[counting[v[i]/significantDigit%10]--] = v[i];
        }

        for(int i = 1 ; i <= n ; i ++ )
            v[i] = vectorAux[i];
        significantDigit *= 10;

    }
    printArray(v,n);
}
int main(){

    int n , a , b , c ;
    ifstream in("radixsort.in");
    in >> n >> a >> b >> c;
    v[1] = b ;
    for(int i = 1 ; i <= n ; i++)
        v[i] = (v[i-1] * a + b ) % c ;
    radixSort(n);

}