Pagini recente » Cod sursa (job #2668439) | Cod sursa (job #239108) | Cod sursa (job #2492202) | Cod sursa (job #659388) | Cod sursa (job #2623240)
#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;
}