Cod sursa(job #2623240)

Utilizator StefansenNegulescu Stefan Stefansen Data 2 iunie 2020 19:54:12
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
int a[50][50];

void add(int v[],int n)
{
    int mini=pow(10,9),i;
    for(i=1;i<=n;i++)
        if(mini>v[i])
        mini=v[i];
    if(mini<0)
        for(i=1;i<=n;i++)
        v[i] = -mini;

}
void matr()
{       int i,j;
        for(i=0;i<=9;i++)
        for(j=0;j<=30;j++)
        a[i][j]=0;
}
ifstream f("radixsort.in");
ofstream g("radixsort.out");


int main()
{
    long v[50],i,j,n,maxi=0,nr=0,k;
    f>>n;
    for(i=1;i<=n;i++){
        f>>v[i];
        if(maxi<v[i])
            maxi=v[i];}
    while(maxi!=0)
    {
        nr++;
        maxi/=10;
    }
    cout<<nr<<endl;

    matr();

    int exp = 1;

    for(j=1;j<=nr;j++){
    for(i=1;i<=n;i++){
        a[v[i]/exp%10][++a[v[i]/exp%10][0]] = v[i];}
      int  aux=0;
    for(i=0;i<=9;i++)
        if(a[i][0]>0)
        for(k=1;k<=a[i][0];k++)
            v[++aux] = a[i][k];
        matr();
        exp *= 10;}

    for(i=1;i<=n;i++)
        cout<<v[i]<<" ";
        f.close();
        return 0;
}