Pagini recente » Cod sursa (job #1934735) | Cod sursa (job #1582535) | Cod sursa (job #1937107) | Cod sursa (job #2756152) | Cod sursa (job #2252186)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int GetMax(int arr[],int n)
{
int nax=arr[0];
for(int i=1;i<n;i++) if(nax<arr[i]) nax=arr[i];
}
void CountSort(int arr[],int n,int exp)
{
int i,c[10]{},a[n];
for(i=0;i<n;i++) c[(arr[i]/exp)%10]++;
for(i=1;i<10;i++) c[i]+=c[i-1];
for(i=n-1;i>=0;i--)
{
a[c[(arr[i]/exp)%10]-1]=arr[i];
c[(arr[i]/exp)%10]--;
}
for(i=0;i<n;i++) arr[i]=a[i];
}
void RadixSort(int arr[],int n)
{
int m=GetMax(arr,n); int exp;
for(exp=1;m/exp>0;exp*=10) CountSort(arr,n,exp);
}
int main()
{
int n,a[500001];
fin>>n;
for(int i=0;i<n;i++) fin>>a[i];
RadixSort(a,n);
for(int i=0;i<n;i++) fout<<a[i]<<' ';
return 0;
}